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