On 23/01/2014 05:49, Quoth John Maddock:
I wonder however how this should be done. Just removing the macro definitions from the config compiler headers is not enough because people can in principle use their own configs. Might it perhaps be better to leave the compiler headers intact and just warn/#error in suffix.hpp when an unsupported macro is set?
That actually sounds like a reasonable idea: it means we preserve the "accumulated knowledge" in the config headers (and that old stuff has absolutely zero impact on maintenance there, it's basically fossil code at this stage), while at the same time providing the user with a clear indication that they're doing something unsupported. Likewise library authors who really want to support those old compilers - or else just don't use any advanced features - can still do so. We can even provide a macro which when #defined suppresses the #error.
+1. It's better for the build to error out quickly with "you are using an unsupported compiler" (or even "your compiler does not support feature X, which is mandatory") than for it to fail in less obvious ways later (or worse, appear to compile successfully but then do something weird at runtime). So it makes sense for Config (or possibly Predef) to still detect all versions of compilers. And as you point out, it's nearly free and won't clutter the rest of Boost.