CXXMethodDecl::getNameAsString for template-class' constructor or destructor

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 ?

Thank you !

David.

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