On 5 Apr 2012, David C. Rankin spake thusly: > I read that. What are you saying that we are being bitten by in there? Most of > it was Greek, but the only thing I could draw from it is that some of the new > C++11 implementation is now clashing with old code in TDE causing it to be > interpreted by the compiler as something other than what it was designed to be. Definitely not. The C++11 stuff only applies when the appropriate -std option is specified, which it had bloody well better not be in this case because C++11 and C++99 have different libstdc++ ABIs (e.g. the size of an STL list<> is different). > -> G++ now sets the predefined macro __cplusplus to the correct value, 199711L > for C++98/03, and 201103L for C++11. That's the same as always for C++98/03: only C++11 is different (which couldn't be set to the right value before owing to lack of a time machine). > -> G++ now correctly implements the two-phase lookup rules such that an > unqualified name used in a template must have an appropriate declaration found > either in scope at the point of definition of the template or by > argument-dependent lookup at the point of instantiation. At last! > How you check for this stuff is way beyond me.... Wait for a failure, then move the errant definition up a bit. (This may require creating new header files here and there, I suppose.) It's just code motion, not rewriting. Not hard. -- NULL && (void)