
On 21 November 2010 17:49, Edward Diener <eldiener@tropicsoft.com> wrote:
"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.
Yes, I thought it was pretty clear.
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.
Boost used to only use BOOST_NO_ macros for C++03 features for this reason. The decision was made to target C++0x compilers a while back, which is why the old macros for C++0x features were deprecated and replaced with the new macros. But Peter wants to target C++03 compilers, so he still uses the old deprecated macros.
But that brings up the question of what is meant by a "standard-compliant" compiler.
He meant the current standard at the time of writing, ie. C++03 (but that doesn't mean he'll necessarily change as soon as C++0x is fully standardised).
If Boost really supposed to be compiled by a standard-compliant compiler
Peter was only writing about his own libraries. He hasn't tried to influence the rest of boost. I find his position understandable since, for a lot of people, his libraries are essential building blocks for C++ development, so reliability and ease of use is more important than using the latest C++ features. I seem to have become his proxy in this. That's not a good idea as I'll end up misrepresenting him in some way (or maybe have already). If you want to take this further, I'd suggest starting a new thread with his libraries in the subject line. Daniel