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

Eric Niebler eric at boostpro.com
Fri Mar 4 00:08:58 PST 2011


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.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com



More information about the cfe-dev mailing list