[cfe-dev] AST for DeclRefExpr of NonTypeTemplateParm
Reid Kleckner via cfe-dev
cfe-dev at lists.llvm.org
Wed Apr 27 10:23:39 PDT 2016
On Wed, Apr 27, 2016 at 10:09 AM, Mikhail Ramalho via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> 1. How can I ignore any non instantiated varDecl?
>
Check if the variable lives in a dependent DeclContext, something like
'VD->getDeclContext()->isDependentContext()'.
> 2. How can I get the instantiated VarDecl? (Actually, the opposite of the
> first question).
>
> I mean, somewhere there must be a VarDecl with
> a SubstNonTypeTemplateParmExpr, right?
>
If you instantiate it, then yes, it will be there. Changing the last line
of your program to 'return *A<&B::c>::p;' adds this AST node to the dump:
`-VarDecl 0xcc3f08 parent 0xcc2380 prev 0xcc2698 <line:5:1, col:23> col:19
used p 'const char *' cinit
`-SubstNonTypeTemplateParmExpr 0xcc4110 <col:23> 'const char *'
`-UnaryOperator 0xcc40f0 <col:23> 'const char *' prefix '&'
`-DeclRefExpr 0xcc40c8 <col:23> 'const char' lvalue Var 0xcc20b0 'c'
'const char'
> 3. Is it possible to generate the AST without any template? I'm only
> interested in the instantiated templates. It seems a long shot, but who
> knows.
>
No.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160427/adfd37d4/attachment.html>
More information about the cfe-dev
mailing list