Declaration for TemplateTypeParmType

We have not found any way to get declaration from TemplateTypeParmType
(while this is feasibile for UnresolvedUsingType, TypedefType,
RecordType, EnumType, InjectedClassNameType).

What is the proper way to associate TemplateTypeParmType to its
TemplateTypeParmDecl?

By finding the template parameters from the appropriate enclosing context.
That's... not really a satisfying answer.

Doug, is there a good reason the optional IdentifierInfo isn't an optional
TemplateTypeParmDecl? Just to save a very small amount of memory
when there are lots of out-of-line template member declarations?

John.

The intent is to reduce memory usage, since I'd imagined that there were many depth-0, index-0 template parameters named 'T' or '_Tp' in any given translation unit. Frankly, I doubt that it's that big a deal, and storing a TemplateTypeParmDecl* would be more consistent with the rest of the type system.

I see that we could actually make TemplateTypeParmType itself smaller, by storing a single uintptr_t that is either (1) a TemplateTypeParmDecl*, or (2) a bit-field containing Depth/Index/ParameterPack.

  - Doug

I've attached the patch for your review/approval.

TTPT_getDecl.patch (12.3 KB)

Hello Abramo,