
Edward Diener <eddielee@tropicsoft.com> writes:
David Abrahams wrote:
Edward Diener <eddielee@tropicsoft.com> writes:
It would be much easier, and less confusing, when looking at compiler workarounds in Boost code if their were defines for various compilers/versions in a configuratiion header file such as:
#define BOOST_COMPILER_SOME_COMPILER_LOWER (PREPROCESSOR_TAG >= nnnn) #define BOOST_COMPILER_SOME_COMPILER_UPPER (PREPROCESSOR_TAG <= nnnn) #define BOOST_COMPILER_SOME_COMPILER (BOOST_COMPILER_SOME_COMPILER_LOWER && BOOST_COMPILER_SOME_COMPILER_UPPER)
Not sure why you'd want to do that. Then you only get a binary value for BOOST_COMPILER_SOME_COMPILER.
You would get a boolean of true or false.
That wouldn't be very useful in Boost. If you look through Boost code you'll find a lot of places where a <, <=,>, or >= comparison is needed against a compiler version.
I'd rather have a composite version number.
I would rather know whether some compiler is being referred to or not.
Then learn what the version numbers mean?
#if defined(BOOST_COMPILER_VC71) etc.
rather than the less understandable
#if defined(MSC_VER == nnnn) etc.
Actually we have BOOST_MSVC. The only reason we'd test _MSC_VER is for those cases where we want to catch *all* compilers that emulate VC++ (e.g. for #pragma once).
Does BOOST_MSVC referring to all versions of MSVC ?
Yes.
I wanted something easy which refers to particular major version of particular compiler toward which Boost is targeted.
I guess you'd have to make it up yourself, because if we used that in Boost it would become a big(ger) mess.
Is there a list of general compiler/versions which Boost supports.
No
I realize I am just a reader of Boost code and not a Boost developer but I think this suggestion would make for a little more readable code in its own small way.
I agree! I suggest you prepare a patch for the config library that we can use in Boost after 1.33.0
If I can get a comprehensive list of compiler/versions and their corresponding preprocessor symbols I will be glad to do it. I can find out the appropriate information for Microsoft and Borland on Windows easily enough myself.
Well, I think I spoke too soon. What you appear to be asking for would add little of value to Boost and would undermine the capabilities we get from BOOST_WORKAROUND. -- Dave Abrahams Boost Consulting www.boost-consulting.com