<div dir="ltr">Hi,<div><br></div><div>Given the below input to clang tooling, when I traverse ParameterMap's type, I get that std::map is a template specialization, with two nested template specializations, std::basic_string.  Therefore I can extract the information I'm looking for.</div><div>#include <map><br><br>using String = std::string;<br>using ParameterMap = std::map<String, String>;<br><br></div><div><br></div><div><br></div><div>If we take the indirection one step further with this input to clang tooling</div><div>#include <map><br><br>template <typename K, typename V> using Map = std::map<K, V>;<br>using String = std::string;<br>using ParameterMap = Map<String, String>;<br><br>ParameterMap someFunc() { return ParameterMap(); }<br></div><div><br></div><div>then String is now a SubstTemplateTypeParmType.  If I desugar that, I get that String is a record rather than a template specialization, so I cannot get the template types of String.  Is that intended?  How can I get the template information for String in this case?</div><div><br></div><div>Thanks,</div><div>Justin</div></div>