John Maddock wrote:
With respect to older compilers, it's also worth asking what kind of support we should expect - for example gcc-4.4 is a pretty reasonable C++03 compiler, but personally I refuse to continue to support C++0x mode when that pre-dates the standard and varies from it quite considerably. 4.6 and 4.7 also have enough foibles in C++0x mode to require a fair number of workarounds, but once we get to 4.8 the compiler is good enough not to require too many herculean efforts to support.
As I said in my other message, what I consider reasonable is for things that used to work to remain working. So if a library used to work with g++ 4.4 cxxstd=0x, we should try to maintain it in a working condition, but if it never worked, there is no point in expending effort to make it work. Pure backward compatibility, in other words. In practice breakage occurs when one does "#if this C++11 feature is supported, do that", and gcc 4.4 (or 4.6) advertises support for this C++11 feature, but the newly introduced code doesn't work there. This is easy enough to fix as long as someone notices. (The case on earlier MSVCs is similar because they introduced support for C++11 features in a counter-intuitive order, for instance <tuple> before variadic templates and so on.)