[LLVMdev] CXXMethodDecl::getNameAsString for template-class' constructor or destructor

Kyle Sluder kyle at ksluder.com
Tue Feb 18 11:10:38 PST 2014


On Feb 17, 2014, at 12:43 AM, David Come <davidbrcz at gmail.com> wrote:
> 
> Hello !
> 
> I'm writing a small software to translate header into C++ files. It works fine for non-template class but I'm having n issue with template class, especially with template class's constructor or destructor.
> 
> I'm using CXXMethodDecl::getNameAsString to get the name of the function. For a non template class like 
> 
>   struct C
>   {
>     C();
>     ~C();   
>     //other stuff
>   }
> The previous function gives me (as I expect) C and ~C.
> 
> But if the class is template like the following:
> 
>   template <class TT,int N> 
>   struct C
>   {
>     C();
>     ~C();
>    }
> I get as result : C<TT, N> and ~C<TT, N>, which is not what I was expecting. 
> 
> For me, the name of a function should not be independent of the class being template. Classic functions behave the way I expect (same name in both cases).
> 
> 
> 
> Am I missing something ? Is this the normal behavior or a bug ?
> 
I'm new to this myself, but:

1. This sounds like a question better-suited for cfe-dev, not llvmdev.

2. NamedDecl::getNameAsString() is deprecated; use getName() instead.

3. NamedDecl also as getDeclName(), which is documented to return “the actual, stored name of the declaration, which may be a special name.”

--Kyle Sluder
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140218/a16fd6e0/attachment.html>


More information about the llvm-dev mailing list