
Sounds like it's close enough, it might fail for people with VC6 + Intel and an updated Dinkum library,
Why?
Because although the library version number will be updated, it will still be a broken library (because Dinkumware ship libraries that are preconfigured to a particular compiler).
but that'll just have to be too bad, changes in mainline cvs now.
Thanks. Now, pardon me if I have other questions (all concerning the part that follows the #if/#endif above):
- shouldn't the test for BOOST_STD_EXTENSION_NAMESPACE be based on the *library* version, rather than _MSC_VER?
- shouldn't BOOST_NO_STD_ITERATOR_TRAITS test for "real" VC6?
Same problem, it doesn't matter what the library version number is, because the Dinkum library is preconfigured for a particular compiler, it doesn't become un-broken just because we're using Intel, if was originally configured for VC6/7, then it will always be broken, period.
<debatable> At the cost of duplicating the definition, maybe it would be clearer to do:
#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) // full Dinkum
# if REAL_VC6 ... # define BOOST_NO_STD_ITERATOR_TRAITS // <--- # endif
#else // old Dinkum ... # define BOOST_NO_STD_ITERATOR_TRAITS // <--- #endif </debatable>
- The test for BOOST_NO_STD_LOCALE is really restrictive. Fortunately it only refers to the Dinkum lib shipping with VC7. However if many of our users use Intel C++ with that library then it might be worth to soften it, because it really prevents a lot of code to work. (Well, this is not really a question :))
Sure, but Intel was choking on anything that included <locale> (or even did any vaguely non-trivial stream io) - if you can verify that this has been fixed with Intel 8 (I'm sure it probably has), then lets add an Intel version check and re-enable this for Intel 8.
PS: I'm not one who claims that others do work that he could do. It's just that these issues are a bit delicate and I wanted to see with you if there's any problem I'm missing. After that, I could commit the changes for you, if you like. This also holds for the compiler identification macros, after we agree on the names, of course. I propose:
BOOST_COMEAU_CPP or BOOST_COMEAU_COMPILER BOOST_GNU_CPP or BOOST_GNU_COMPILER BOOST_INTEL_CPP or BOOST_INTEL_COMPILER
BOOST_MSVC (well, this is a bit inconsistent :( Ideas?)
Personally I prefer the BOOST_GNU_COMPILER versions, but we already have BOOST_INTEL_CXX_VERSION, so maybe BOOST_GCC_CXX_VERSION etc? Thanks, John.