[cfe-dev] MS/Borland portability and 2-phase lookup

John McCall rjmccall at apple.com
Fri Mar 4 00:31:24 PST 2011


On Mar 4, 2011, at 12:08 AM, Eric Niebler wrote:
> We have a portability problem compiling old code for MS/Borland with
> clang: 2-phase lookup. Those compilers don't do it, so they accept code
> that clang rejects. For example:
> 
> template<class X>
> struct S {
>  int i;
> };
> 
> template<class Y>
> struct T {
>  T() {
>    i = 0; // ERROR, should be T::i or this->i
>  }
> };
> 
> Clang correctly diagnoses this problem, which presents a problem for old
> broken code that compiles OK with MS and Borland. This problem appears
> to be quite widespread.
> 
> Would there be any interest in a patch that turns off 2-phase lookup
> when in MS/Borland compatibility mode
> (-fms-extensions/-fborland-extensions)? If so, I can see about providing
> one.

I think François Pichet is working on an MS-compatible template mechanism.
It's more complicated than just turning off 2-phase lookup.

John.



More information about the cfe-dev mailing list