[cfe-dev] Clang API: specialise a class template and all its members

Vassil Vassilev via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 14 09:14:50 PDT 2016


On 12/03/16 00:53, Dimitar Dobrev via cfe-dev wrote:
>
> Hello all,
>
> I have a clang::ClassTemplateDecl object with a single template 
> argument. I want to specialise it for a certain type (void*). I use 
> the following code:
>
>         clang::TemplateArgument t(C->getASTContext().VoidPtrTy);
>         auto CTSVoidStar = 
> clang::ClassTemplateSpecializationDecl::Create(C->getASTContext(),
>             clang::TagTypeKind::TTK_Class, CTS->getDeclContext(), 
> clang::SourceLocation(), clang::SourceLocation(),
>             CTS->getSpecializedTemplate(), &t, 
> CTS->getTemplateArgs().size(), CTS);
>
> where CTS->getSpecializedTemplate() is my ClassTemplateDecl. The 
> problem with it is while according to CTSVoidStar->dump() it looks 
> correct, it lacks any functions, and it's the functions that I need - 
> their mangled names in particular. I know for sure that my 
> ClassTemplateDecl does have functions. My question is how to get a 
> complete specialisation, with all members and not just the class 
> itself. Thank you.
Perhaps you could have a look at 
http://clang.llvm.org/doxygen/classclang_1_1Sema.html#a959c3ea985edf81ee649c0325ad623f8
Ideally calling this interface with the right set of arguments would 
create a proper specialization or a diagnostic.
--Vassil
>
>
> Regards,
> Dimitar Dobrev
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160314/97f97d3f/attachment.html>


More information about the cfe-dev mailing list