
I changed the subject line as this is of more interest than the original title could suggest. For those who are just tuned in, there's ongoing work for having a more consistent and rational identification system for supported compilers, platforms and standard libraries. A wiki page is at http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostConfig and contributions are welcome, especially for macro definitions marked with '?'. Previous discussion has raised at least two important points: * the amount of work needed for conversion to the new system (either of the Boost.Config code itself and of client code) is non negligible and will take time * a choice is needed for compilers which offer emulation modes, e.g. Comeau C++, which defines _MSC_VER when emulating VC++. I want to add another couple of remarks * the BOOST_TESTED_AT macro; it seems we forgot about this, but we should be able to write: #if BOOST_WORKAROUND (BOOST_CXX_MSVC, BOOST_TESTED_AT(...)) or its moral equivalent. This means that either BOOST_TESTED_AT or BOOST_WORKAROUND can't have the current and the proposed syntax, respectively 2) rather than doing all the #ifdef/define/endif machine in suffix.hpp, wouldn't it be more elegant to have a prefix.hpp? // at the top of config.hpp #include <boost/config/prefix.hpp> // in prefix.hpp #define BOOST_ABSENT() 0 // Comeau C++ #define BOOST_CXX_COMO BOOST_ABSENT() // Digital Mars C++ #define BOOST_CXX_DMC BOOST_ABSENT() // Intel C++ #define BOOST_CXX_INTELC BOOST_ABSENT() // GNU C++ #define BOOST_CXX_GNUC BOOST_ABSENT() .... Cheers, --Gennaro.