<div dir="ltr">You are right, embarrassingly my test case was incorrectly written, it works now. Thank you.</div><div class="gmail_extra"><br><div class="gmail_quote">On 19 July 2017 at 16:56, Raphael Isemann <span dir="ltr"><<a href="mailto:teemperor@gmail.com" target="_blank">teemperor@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Not sure if I understand correctly, but you specialize your template<br>
without any fields in your example.<br>
<br>
What you want to do is I think:<br>
<br>
   template class Foo<float>;<br>
<br>
which yields the correct result for me:<br>
<br>
teemperor@ftlserver ~/test> cat test.cpp<br>
<span class="">template <class T><br>
class Foo<br>
{<br>
       T bar;<br>
};<br>
<br>
template class Foo<float>;<br>
</span>teemperor@ftlserver ~/test> clang++ -cc1 -fcolor-diagnostics -ast-dump<br>
-x c++ test.cpp<br>
TranslationUnitDecl 0x5578e347d9a0 <<invalid sloc>> <invalid sloc><br>
|-TypedefDecl 0x5578e347df30 <<invalid sloc>> <invalid sloc> implicit<br>
__int128_t '__int128'<br>
| `-BuiltinType 0x5578e347dc10 '__int128'<br>
|-TypedefDecl 0x5578e347df98 <<invalid sloc>> <invalid sloc> implicit<br>
__uint128_t 'unsigned __int128'<br>
| `-BuiltinType 0x5578e347dc30 'unsigned __int128'<br>
|-TypedefDecl 0x5578e347e2d8 <<invalid sloc>> <invalid sloc> implicit<br>
__NSConstantString 'struct __NSConstantString_tag'<br>
| `-RecordType 0x5578e347e080 'struct __NSConstantString_tag'<br>
|   `-CXXRecord 0x5578e347dfe8 '__NSConstantString_tag'<br>
|-TypedefDecl 0x5578e347e370 <<invalid sloc>> <invalid sloc> implicit<br>
__builtin_ms_va_list 'char *'<br>
| `-PointerType 0x5578e347e330 'char *'<br>
|   `-BuiltinType 0x5578e347da30 'char'<br>
|-TypedefDecl 0x5578e34b2320 <<invalid sloc>> <invalid sloc> implicit<br>
__builtin_va_list 'struct __va_list_tag [1]'<br>
| `-ConstantArrayType 0x5578e347e650 'struct __va_list_tag [1]' 1<br>
|   `-RecordType 0x5578e347e460 'struct __va_list_tag'<br>
|     `-CXXRecord 0x5578e347e3c0 '__va_list_tag'<br>
|-ClassTemplateDecl 0x5578e34b24b8 <test.cpp:1:1, line:5:1> line:2:7 Foo<br>
| |-TemplateTypeParmDecl 0x5578e34b2370 <line:1:11, col:17> col:17<br>
referenced class T<br>
| |-CXXRecordDecl 0x5578e34b2420 <line:2:1, line:5:1> line:2:7 class<br>
Foo definition<br>
| | |-CXXRecordDecl 0x5578e34b2728 <col:1, col:7> col:7 implicit class Foo<br>
| | `-FieldDecl 0x5578e34b27d0 <line:4:2, col:4> col:4 bar 'T'<br>
| `-ClassTemplateSpecialization 0x5578e34b2850 'Foo'<br>
`-<wbr>ClassTemplateSpecializationDec<wbr>l 0x5578e34b2850 <line:7:1, col:25><br>
col:16 class Foo definition<br>
 |-TemplateArgument type 'float'<br>
 |-CXXRecordDecl 0x5578e34b2a48 prev 0x5578e34b2850 <line:2:1, col:7><br>
col:7 implicit class Foo<br>
 `-FieldDecl 0x5578e34b2b18 <line:4:2, col:4> col:4 bar 'float':'float'<br>
<br>
<br>
- Raphael<br>
<div><div class="h5"><br>
2017-07-19 16:30 GMT+02:00 Marko Pintera via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>>:<br>
> Hello,<br>
><br>
> I'm trying to parse fields of an explicitly instantiated template, like<br>
> this:<br>
> ~~~<br>
> template <class T><br>
> class Foo<br>
> {<br>
> T bar;<br>
> };<br>
><br>
> template<> class Foo<float>;<br>
> ~~~<br>
><br>
> In the example above, I'd like to know that "Foo<float>" has a field "bar"<br>
> of type "float".<br>
><br>
> I am able to access "<wbr>ClassTemplateSpecializationDec<wbr>l" of "Foo<float>", but<br>
> it reports no fields. It does contain a list of template arguments (a<br>
> "float" for the specific example above), but since there are no fields I am<br>
> unsure how to interpret them.<br>
><br>
> I can also access "CXXRecordDecl" of "Foo<T>" by calling<br>
> "<wbr>ClassTemplateSpecializationDec<wbr>l::getSpecializedTemplate()-><wbr>GetTemplatedDecl()".<br>
> This does report the "bar" field, but I do not appear to have information<br>
> about its actual type from the explicit instantiation.<br>
><br>
> How can I learn the type of "bar" in an explicit instantiation of "Foo<T>"?<br>
><br>
> Thanks!<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
><br>
</blockquote></div><br></div>