[cfe-dev] Omitted declaration

Abramo Bagnara abramo.bagnara at gmail.com
Wed Jun 9 00:52:49 PDT 2010


Il 05/06/2010 18:44, Abramo Bagnara ha scritto:
> Il 29/05/2010 18:31, Douglas Gregor ha scritto:
>>
>> On May 29, 2010, at 1:02 AM, Abramo Bagnara wrote:
>>
>>> template <typename T>
>>> struct S {
>>> };
>>>
>>> // S<int> v;
>>>
>>> template struct S<int>;
>>>
>>> Uncommenting the line above the ClassTemplateSpecializationDecl related
>>> to the last line disappears from declarations available inside
>>> TranslationUnitDecl.
>>>
>>> I don't think it's expected, right?
>>
>>
>> It's expected (because it was written that way), but it's still a bug. Sema::ActOnExplicitInstantiation intentionally reuses existing ClassTemplateSpecializationDecl nodes from implicit instantiations, rather than always creating a new node. However, when we re-use such a node, we don't insert it into lexical context. It should be relatively easy to fix.
>>
> 
> Unfortunately not so easy... we have found this code rather mess...
> complex ;-)
> 
> However I've attached the patch for your review/approval.

Sorry to annoy you, but we have other patches to submit and, you know,
patches life outside current svn tree is a bit... dangerous.



More information about the cfe-dev mailing list