[cfe-dev] Declaration for TemplateTypeParmType
Douglas Gregor
dgregor at apple.com
Mon Jun 14 09:21:47 PDT 2010
On Jun 13, 2010, at 1:22 AM, John McCall wrote:
> On Jun 13, 2010, at 12:16 AM, Abramo Bagnara wrote:
>> 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?
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
More information about the cfe-dev
mailing list