I am in favor of removing support for compilers that don't support partial specialization, partial ordering and void returns, notably MSVC 6.0/7.0. Dropping support for GCC < 3 would probably be uncontroversial as well. Not sure about the others.
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. Let me see if I can figure out how to revert those changes cleanly, John.