<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 26, 2015 at 1:12 PM, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra">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.</div></blockquote><div><br></div><div>Wouldn't that be a bug?</div><div><br></div><div>It certainly looks like a bug -- the lookup table has named decl in it for the constructor name that is a wild pointer.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><br></div><div class="gmail_extra">Perhaps the simplest thing to do would be to add the name of the current class to Names before performing the lexical walk of the class, if it's in the list of constructor names. That would also let you avoid the lexical walk entirely if the only constructor or conversion name is for the class's own constructor(s) (that is, if the class has no inheriting constructors or conversion functions, but does have constructors, which is likely to be a very common case).</div></blockquote></div><br><br></div></div>