This is excellent information Markus. It gives us a good view of compilers conformance (using boost libraries as test cases). Thank you ! Mauricio Gomes Pensar Digital phone: 55-11-4121-6287 mobile: 55-11-8319-9610 http://pensardigital.com On Apr 20, 2005, at 10:00 AM, Markus Schöpflin wrote:
Mauricio Gomes wrote:
Do the code still needs a lot of workarounds for compilers problems or the latest versions of the compilers have good compliance ? 1.32 report shows a good situation but I don't know if it reflects good compilers compliance or boost developers heroic efforts to workaround problems.
Not a direct answer to your question, but... you have made me curious. I hacked together something which counts the occurences of the various BOOST_WORKAROUND macros in use. Attached is the result.
This is far from perfect, but as you can see the majority of workaround are either for gcc < 3 of for the various versions of MSVC.
Markus 257 BOOST_WORKAROUND(__GNUC__,<3) 133 BOOST_WORKAROUND(BOOST_MSVC,<=1300) 112 BOOST_WORKAROUND(BOOST_MSVC,<1300) 73 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x564)) 63 BOOST_WORKAROUND(BOOST_MSVC,<=1200) 50 BOOST_WORKAROUND(__BORLANDC__,<0x600) 47 BOOST_WORKAROUND(__IBMCPP__,<=600) 36 BOOST_WORKAROUND(BOOST_MSVC,==1200) 24 BOOST_WORKAROUND(__MWERKS__,BOOST_TESTED_AT(0x3003)) 22 BOOST_WORKAROUND(__MWERKS__,<=0x3003) 22 BOOST_WORKAROUND(BOOST_MSVC,==1300) 22 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,==1) 21 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x551)) 18 BOOST_WORKAROUND(__GNUC__,==2) 16 BOOST_WORKAROUND(__DMC__,BOOST_TESTED_AT(0x840)) 16 BOOST_WORKAROUND(__BORLANDC__,<=0x551) 14 BOOST_WORKAROUND(__MWERKS__,<=0x2407) 13 BOOST_WORKAROUND(__MWERKS__,BOOST_TESTED_AT(0x3201))) 13 BOOST_WORKAROUND(__MWERKS__,>0x3100) 12 BOOST_WORKAROUND(BOOST_MSVC,==1310) 12 BOOST_WORKAROUND(BOOST_MSVC,<1310) 11 BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(600)) 11 BOOST_WORKAROUND(__GNUC__,<3)&&!defined(__SGI_STL_PORT)&&! defined(_STLPORT_VERSION) 10 BOOST_WORKAROUND(__SUNPRO_CC,BOOST_TESTED_AT(0x530)) 9 BOOST_WORKAROUND(__BORLANDC__,<0x560) 9 BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) 8 BOOST_WORKAROUND(_RWSTD_VER,BOOST_TESTED_AT(20101)) 8 BOOST_WORKAROUND(__MWERKS__,BOOST_TESTED_AT(0x3202)) 8 BOOST_WORKAROUND(__BORLANDC__,<=0x0551) 7 BOOST_WORKAROUND(_MSC_FULL_VER,BOOST_TESTED_AT(13102292)) 7 BOOST_WORKAROUND(__HP_aCC,BOOST_TESTED_AT(55500)) 7 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x570))) 7 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x561)) 7 BOOST_WORKAROUND(__BORLANDC__,<=0x564) 7 BOOST_WORKAROUND(BOOST_MSVC,>=1400) 6 BOOST_WORKAROUND(__GLIBCPP__,==20020514) 6 BOOST_WORKAROUND(__EDG_VERSION__,<=238) 6 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700) 5 BOOST_WORKAROUND(__SUNPRO_CC,<=0x530) 5 BOOST_WORKAROUND(__GNUC__,<=2) 5 BOOST_WORKAROUND(__EDG_VERSION__,<=245) 5 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x0551)) 5 BOOST_WORKAROUND(__BORLANDC__,<=0x570) 4 BOOST_WORKAROUND(__SUNPRO_CC,==0x530) 4 BOOST_WORKAROUND(__IBMCPP__,==600) 4 BOOST_WORKAROUND(__HP_aCC,BOOST_TESTED_AT(53800)) 4 BOOST_WORKAROUND(__GNUC__,==4) 4 BOOST_WORKAROUND(__GNUC__,==3) 4 BOOST_WORKAROUND(__EDG_VERSION__,<=243) 4 BOOST_WORKAROUND(BOOST_MSVC,>1300) 4 BOOST_WORKAROUND(BOOST_MPL_CFG_GCC,BOOST_TESTED_AT(0x0304)) 3 BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(502)) 3 BOOST_WORKAROUND(__EDG_VERSION__,<=244)&&! defined(BOOST_INTEL_CXX_VERSION) 3 BOOST_WORKAROUND(__DECCXX_VER,BOOST_TESTED_AT(60590040)) 3 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x0564)) 3 BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1310)) 3 BOOST_WORKAROUND(BOOST_MSVC,<=1310) 3 BOOST_WORKAROUND(BOOST_MPL_CFG_GCC,BOOST_TESTED_AT(0x0302)) 3 BOOST_WORKAROUND(BOOST_INTEL_WIN,BOOST_TESTED_AT(800)) 3 BOOST_WORKAROUND(BOOST_INTEL,<=700) 3 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,<306) 2 BOOST_WORKAROUND(symbol,test) 2 BOOST_WORKAROUND(_STLPORT_VERSION,<0x461) 2 BOOST_WORKAROUND(_STLPORT_VERSION,<=0x450) 2 BOOST_WORKAROUND(_RWSTD_VER,BOOST_TESTED_AT(0x20101)) 2 BOOST_WORKAROUND(__MWERKS__,BOOST_TESTED_AT(0x3205)) 2 BOOST_WORKAROUND(__MWERKS__,<=0x3001) 2 BOOST_WORKAROUND(_MSC_VER,>=1200) 2 BOOST_WORKAROUND(__LIBCOMO_VERSION__,BOOST_TESTED_AT(29)) 2 BOOST_WORKAROUND(__GNUC_PATCHLEVEL__,==3)) 2 BOOST_WORKAROUND(__GNUC_PATCHLEVEL__,==1) 2 BOOST_WORKAROUND(__GNUC_MINOR__,==3) 2 BOOST_WORKAROUND(__GNUC_MINOR__,<=1)) 2 BOOST_WORKAROUND(__GNUC__,==2)&&defined(__STL_CONFIG_H) 2 BOOST_WORKAROUND(__GNUC__) 2 BOOST_WORKAROUND(__EDG_VERSION__,<=238)) 2 BOOST_WORKAROUND(__EDG__,BOOST_TESTED_AT(302)) 2 BOOST_WORKAROUND(__DECCXX_VER,BOOST_TESTED_AT(60590042)) 2 BOOST_WORKAROUND(__DECCXX_VER,BOOST_TESTED_AT(60590041)) 2 BOOST_WORKAROUND(_CRAYC,!=0) 2 BOOST_WORKAROUND(_COMPILER_VERSION,BOOST_TESTED_AT(741))) 2 BOOST_WORKAROUND(__COMO_VERSION__,BOOST_TESTED_AT(4303)) 2 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x570)) 2 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x531)) 2 BOOST_WORKAROUND(__BORLANDC__,<0x600)&&! defined(BOOST_TT_TEST_MS_FUNC_SIGS) 2 BOOST_WORKAROUND(__BORLANDC__,<=0x600) 2 BOOST_WORKAROUND(BOOST_MSVC,<=1300) 2 BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1300)) 2 BOOST_WORKAROUND(BOOST_MSVC,==1400) 2 BOOST_WORKAROUND(BOOST_MSVC,>=1310)) 2 BOOST_WORKAROUND(BOOST_MSVC,<1310)) 2 BOOST_WORKAROUND(BOOST_MSVC,<=1300)||defined(__MWERKS__) 2 BOOST_WORKAROUND(BOOST_MSVC,<1300)||(defined(_MSC_EXTENSIONS)&&BOOST_MS VC<1310) 2 BOOST_WORKAROUND(BOOST_MSVC,<=1200&&__SGI_STL_PORT) 2 BOOST_WORKAROUND(BOOST_MSVC,<=0x1701) 2 BOOST_WORKAROUND(BOOST_MSVC,<=0x1700) 2 BOOST_WORKAROUND(BOOST_MSVC) 2 BOOST_WORKAROUND(BOOST_MPL_CFG_GCC,>=0x0300) 2 BOOST_WORKAROUND(BOOST_MPL_CFG_GCC,<=0x0295) 2 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,BOOST_TESTED_AT(810)) 2 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=800) 2 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,<310) 2 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,<=1) 1 BOOST_WORKAROUND(__SUNPRO_CC,BOOST_TESTED_AT(0x560)) 1 BOOST_WORKAROUND(__SUNPRO_CC,BOOST_TESTED_AT(0x540)) 1 BOOST_WORKAROUND(_STLPORT_VERSION,BOOST_TESTED_AT(0x452)) 1 BOOST_WORKAROUND(_STLPORT_VERSION,>0x450) 1 BOOST_WORKAROUND(__SGI_STL_PORT,<0x500) 1 BOOST_WORKAROUND(__MWERKS__,BOOST_TESTED_AT(0x3002))&&BOOST_PP_ITERATIO N() 1 BOOST_WORKAROUND(__MWERKS__,<0x3202) 1 BOOST_WORKAROUND(__MWERKS__,<=0x3201) 1 BOOST_WORKAROUND(__MWERKS__,<0x3200)) 1 BOOST_WORKAROUND(__MWERKS__,<0x3200) 1 BOOST_WORKAROUND(__MWERKS__,<=0x3004)) 1 BOOST_WORKAROUND(__MWERKS__,<=0x3004) 1 BOOST_WORKAROUND(__MWERKS__,<0x3003) 1 BOOST_WORKAROUND(__MWERKS__,<0x3001) 1 BOOST_WORKAROUND(__MWERKS__,>=0x3000)&&defined(__INTEL__)) 1 BOOST_WORKAROUND(__MWERKS__,<=0x3000) 1 BOOST_WORKAROUND(_MSC_VER,BOOST_TESTED_AT(1300)) 1 BOOST_WORKAROUND(_MSC_VER,<1300)&&!defined(_STLP_VERSION) 1 BOOST_WORKAROUND(_MSC_VER,<=1300) 1 BOOST_WORKAROUND(_MSC_VER,<=1200) 1 BOOST_WORKAROUND(_MSC_FULL_VER,BOOST_TESTED_AT(13103077)) 1 BOOST_WORKAROUND(_MSC_FULL_VER,BOOST_TESTED_AT(13102292)&&BOOST_MSVC>13 00) 1 BOOST_WORKAROUND(_MSC_FULL_VER,>140040607) 1 BOOST_WORKAROUND(_MSC_FULL_VER,>=13102292) 1 BOOST_WORKAROUND(__INTEL_COMPILER,<=800) 1 BOOST_WORKAROUND(__ICL,BOOST_TESTED_AT(700)) 1 BOOST_WORKAROUND(__HP_aCC,<=33500)) 1 BOOST_WORKAROUND(__GNUC_MINOR__,BOOST_TESTED_AT(95)) 1 BOOST_WORKAROUND(__GNUC_MINOR__,<4)&&!defined(__EDG_VERSION__) 1 BOOST_WORKAROUND(__GNUC_MINOR__,<3)) 1 BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(3)) 1 BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(2)) 1 BOOST_WORKAROUND(__GNUC__,==3)&&(__GNUC_MINOR__<4) 1 BOOST_WORKAROUND(__GNUC__,<3)&&defined(__STL_CONFIG_H)) 1 BOOST_WORKAROUND(__GNUC__,<3)&&!defined(__SGI_STL_PORT)&&! defined(_STLPORT_VERSION)) 1 BOOST_WORKAROUND(__GNUC__,<3)) 1 BOOST_WORKAROUND(__GNUC__,<=3) 1 BOOST_WORKAROUND(__GNUC__,==2&&__GNUC_MINOR__==95) 1 BOOST_WORKAROUND(__GNUC__,<=2)) 1 BOOST_WORKAROUND(__EDG_VERSION__,BOOST_TESTED_AT(300)) 1 BOOST_WORKAROUND(__EDG_VERSION__,<300) 1 BOOST_WORKAROUND(__EDG_VERSION__,<=300) 1 BOOST_WORKAROUND(__EDG_VERSION__,==245) 1 BOOST_WORKAROUND(__EDG_VERSION__,==238) 1 BOOST_WORKAROUND(__DECCXX_VER,<=60590041) 1 BOOST_WORKAROUND(_CPPLIB_VER,<=310) 1 BOOST_WORKAROUND(_COMPILER_VERSION,BOOST_TESTED_AT(730))) 1 BOOST_WORKAROUND(__COMO__,BOOST_TESTED_AT(4303)) 1 BOOST_WORKAROUND(__COMO__,<=0x433) 1 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x600)) 1 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x564))) 1 BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x0561)) 1 BOOST_WORKAROUND(__BORLANDC__,<0x600)) 1 BOOST_WORKAROUND(__BORLANDC__,<0x561) 1 BOOST_WORKAROUND(__BORLANDC__,>=0x560) 1 BOOST_WORKAROUND(__BORLANDC__,<=0x550) 1 BOOST_WORKAROUND(__BORLANDC__,<0x0600) 1 BOOST_WORKAROUND(BOOST_RWSTD_VER,BOOST_TESTED_AT(0x20101))) 1 BOOST_WORKAROUND(BOOST_RWSTD_VER,BOOST_TESTED_AT(0x20101)) 1 BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1301)) 1 BOOST_WORKAROUND(BOOST_MSVC,==1310)) 1 BOOST_WORKAROUND(BOOST_MSVC,<=1301)&&!defined(NDEBUG) 1 BOOST_WORKAROUND(BOOST_MSVC_,<=1200)&&! (defined(__ICL)&&defined(_MSC_VER)&&(_MSC_VER==1200)) 1 BOOST_WORKAROUND(BOOST_MSVC,!=1200) 1 BOOST_WORKAROUND(BOOST_IOSTREAMS_GCC,BOOST_TESTED_AT(400)) 1 BOOST_WORKAROUND(BOOST_IOSTREAMS_GCC,<=295) 1 BOOST_WORKAROUND(BOOST_INTEL_WIN,<=900) 1 BOOST_WORKAROUND(BOOST_INTEL_WIN,==710) 1 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700)&&defined(_MSC_VER)) 1 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700)) 1 BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,!=0)&&defined(_MSC_VER) 1 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(313)) 1 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(310))) 1 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,<=310) 1 BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,==1)&&! defined(__SGI_STL_PORT) _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users