On Thu, Mar 26, 2015 at 1:39 PM, Chandler Carruth <chandl...@gmail.com>
wrote:

> On Thu, Mar 26, 2015 at 1:12 PM, Richard Smith <rich...@metafoo.co.uk>
> wrote:
>
>> So, the problem seems to be that the class has implicit special members
>> that are not in the list of lexical declarations of the class but are in
>> the visible lookup results. In order for this to happen, you might need to
>> have two definitions of a class that get merged together, where the
>> implicit special members are only present in the definition that we demoted
>> to a declaration.
>>
>
> Wouldn't that be a bug?
>
> It certainly looks like a bug -- the lookup table has named decl in it for
> the constructor name that is a wild pointer.
>

Just to relay on the mailing list, I chatted with Richard and he explained
that these decls are in some other lexical context on the redecl chain, and
thus correct to find via name lookup but incorrect to merge into this
lexical context.

I've implemented the fix of special casing the current context's implicit
constructor name (should it exist) since those can come from other contexts
in the redecl chain and those are the only constructor or conversion
function names which can come from other contexts in the redecl chain due
to the ODR.
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to