
On Sat, Feb 12, 2005 at 01:29:55PM -0700, Jonathan Turkanis wrote:
Hi,
I have a workaround which I want to apply to all known versions of GCC but not to future versions unless I later determine that it is necessary. Currently I have something like this:
#if !defined(BOOST_INTEL) && ( BOOST_WORKAROUND(__GNUC__, <= 3) || \ BOOST_WORKAROUND(__GNUC__, == 4) && \ BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) ) \ /**/ ... #endif
but I can see from the regression reports that GCC 4.0 is not picking up the workaround code.
What am I doing wrong?
I've wondered about BOOST_TESTED_AT before - I don't think it does the right thing unless BOOST_DETECT_OUTDATED_WORKAROUNDS is defined: # ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS # define BOOST_OPEN_PAREN ( # define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1 # else # define BOOST_TESTED_AT(value) != ((value)-(value)) # endif Now forgive me if I'm being stupid, but unless you're compiling with BOOST_DETECT_OUTDATED_WORKAROUNDS, then BOOST_WORKAROUND( __GNUC_MINOR__, BOOST_TESTED_AT(0) ) tests __GNUC_MINOR__ != 0, which is exactly the opposite of what you are trying to test. Should BOOST_TESTED_AT be defined like this? # define BOOST_TESTED_AT(value) <= (value) Am I being stupid? jon -- "There are basically two types of people. People who accomplish things, and people who claim to have accomplished things. The first group is less crowded." - Mark Twain