On Fri, May 20, 2011 at 09:32:16AM -0700, Jason Merrill wrote:
> G++ has had a long-standing bug with unqualified name resolution in 
> templates: if we didn't find any declaration when looking up a name in 
> the template definition, we would do an additional unqualified lookup at 
> the point of instantiation.  This led to incorrectly finding 
> namespace-scope functions declared later (29131) and member functions of 
> dependent bases (24163).  This patch fixes that bug.

I get the impression that most competing C++ compilers (other than the
old HP compiler) were (or are) very loose about that rule.

> To be friendly to users, the patch also allows affected code to compile 
> with -fpermissive and provides suggestions about how to fix the code: 
> either declaring the desired function earlier (29131) or explicitly 
> qualifying the name with this-> or Class:: (24163).

I think that it's quite likely that there is a lot of C++ code out there
that depends on this bug to compile.  So I'm glad that you've included
user guidance in the error messages, and it would be interesting to see
how much code is affected when, say, compiling a distro.

Reply via email to