
On 11/21/2010 11:15 AM, Daniel James wrote:
On 21 November 2010 15:35, Edward Diener<eldiener@tropicsoft.com> wrote:
On 11/21/2010 4:51 AM, Daniel James wrote:
On 21 November 2010 09:40, John Maddock<boost.regex@virgin.net> wrote:
If someone wants to take on the task of getting the release branch free of the BOOST_HAS_ version, then they can also remove it from Boost.Config ;-)
I tried a while ago but there was some resistance as code using BOOST_HAS_ will work on a compliant C++03 compiler with an empty config file.
I don't understand your remark.
Take a look at:
"On a standard-compliant compiler, shared_ptr supports compilation with an empty config.hpp. This will no longer be the case after this patch. " Evidently with an empty config.h using the old BOOST_HAS_ macros neither BOOST_HAS_VARIADIC_TMPL nor BOOST_HAS_RVALUE_REFS will be defined therefore causing shared_ptr not to use them. Similarly with an empty config.h both BOOST_NO_VARIADIC_TEMPLATES and BOOST_NO_RVALUE_REFERENCES will not be defined causing shared_ptr to use both features even if the compiler does not support them. That seems to be what Peter Dimov is saying. But that looks like a problem with all the BOOST_NO_ macros since an empty config.h will never have any of those macros defined. But that brings up the question of what is meant by a "standard-compliant" compiler. If Boost really supposed to be compiled by a standard-compliant compiler which essentially has an empty config.h than "standard-compliant" should mean one that supports all the latest C++0x features in which case variadic templates and rvalue references are supported and the BOOST_NO_ macro system is entirely correct. But if "standard-compliant" just means the C++03 standard, then clearly any compiler needs a config.h and its own compiler header file with the proper BOOST_NO_ features defined. Or else the BOOST_NO_ system has to be changed to reflect only C++03 standard features and not the C++0x features it currently also encompasses.