[cfe-dev] Finding all references to template alias

Abir Basak abirbasak at gmail.com
Thu Mar 21 03:52:56 PDT 2013

I am new to clang AST. I am trying to write a program which rewrites all
locations in a TU where template alias are used.

say, given

1. template<class T,class U = T>
2. class class_1{};
3. template<class U>
4. using alias1 = class_1<U>;
5. template<class T,class U>
6. using alias2 = class_1<T,U>;
8. template<class X,class Y = alias1<X> >
9. void foo(...)
10. {
11.   alias2<int,X> x = ...;
12. }

I am interested to transform all references to template alias to something
like typename alias1<X>::type, typename alias2<int,X>::type x = ... etc,
and may be optionally remove the 'typename' part if the resulting type is
not dependent.
I am using C++ API with RAV, and presently can get all template alias decl
Visit/Traverse TypeAliasTemplateDecl, but has no idea how to get all
references to them, such as at line 8 & 11 , irrespective to their name.

Any help will be appreciated.
Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130321/de89d2a9/attachment.html>

More information about the cfe-dev mailing list