
"David Abrahams" <dave@boost-consulting.com> skrev i meddelandet news:uwtiivxay.fsf@boost-consulting.com...
"Reece Dunn" <msclrhd@hotmail.com> writes:
This is down to how many resources a tester can put into running the tests. It takes a reasonable amount of time and hard drive space to run the regression tests *per compiler, version and platform*. I know that this is distributed across several testers, but there are only a few core testers that run the tests frequently. It also costs money and effort to set up a new compiler/version.
How is that any different from today?
As far as I can tell, you failed to address my core question. What does making some compilers "supported" and others "not supported" mean for our process, our developers, our users, and our testers?
It may save us from code looking like this (is_reference.hpp): #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true) #if defined(__BORLANDC__) && !defined(__COMO__) && (__BORLANDC__ < 0x600) // these are illegal specialisations; cv-qualifies applied to // references have no effect according to [8.3.2p1], // C++ Builder requires them though as it treats cv-qualified // references as distinct types... BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& volatile,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const volatile,true) #endif #if defined(__GNUC__) && (__GNUC__ < 3) // these allow us to work around illegally cv-qualified reference // types. BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const ,::boost::is_reference<T>::value) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T volatile ,::boost::is_reference<T>::value) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const volatile ,::boost::is_reference<T>::value) // However, the above specializations confuse gcc 2.96 unless we also // supply these specializations for array types BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,T[N],false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const T[N],false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,volatile T[N],false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const volatile T[N],false) #endif #else where there is plenty of workarounds, but no real C++ code in sight. This is really more of a Boost specification language than standard C++. If we skip all of the "terribly nonstandard" compilers, we can also remove most of this kind of code. I would see this as a great improvement to the library! Bo Persson