[cfe-dev] Question about class names

Jesper Eskilson jesper.eskilson at iar.com
Wed Nov 6 03:34:05 PST 2013


Hi,

I'm trying to find a way to construct a string which uniquely identify a 
class such that different template instantiations yields a different 
string. Say thay I have a class template A:

template<class T> class A;
A *a = new A<int>();

then if I start from the CXXConstructExpr:

ctorExpr->getConstructor()->getQualifiedNameAsString()

it will get be "A<int>::A".

But say that I have another class B which inherits from A:

class B : public A<int> {
};

B *b = new B;

How do I find out how A is templatized? Ideally I would like to get out 
a string such as "A<int>", but the closest I get is to do

CXXBaseSpecifier base = ;
base.getType()->getAsCXXRecordDecl()->getQualifiedNameAsString();

but this will only give me "A". How do I find out the template 
parameters used when instantiating A?

-- 
*Jesper Eskilson* /Development Engineer/
IAR Systems AB
Box 23051, Strandbodgatan 1
SE-750 23 Uppsala, SWEDEN
E-mail: jesper.eskilson at iar.com <mailto:jesper.eskilson at iar.com>
Website: www.iar.com
<http://www.iar.com> Twitter: www.twitter.com/iarsystems
<http://www.twitter.com/iarsystems>



More information about the cfe-dev mailing list