I've just checked in boost/detail/workaround.hpp, which defines the BOOST_WORKAROUND macro.
This macro can and should be used in place of explicit tests for particular compiler/library/platform versions. I've also gone through and replaced all the explicit tests in boost/iterator_adaptors.hpp with uses of BOOST_WORKAROUND, as a proof-of-concept. One thing I really noticed, which I've been meaning to mention here for a long time: we used to have an informal policy that non-workaround code should appear first, e.g.: # if !broken-compiler // normal code #else // workaround code #endif That approach never scaled well (what if you have multiple workarounds for different compilers?) and it works even less-well now. you have to write # if !BOOST_WORKAROUND(version, <= old_version) ... But the BOOST_WORKAROUND macro is much clearer when it announces the workaround code, not the regular stuff. So I suggest that we give in to reality and put the workaround code at the bottom of the chain of #if directives. -Dave -- David Abrahams [EMAIL PROTECTED] * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost