Boost logo

Boost :

Subject: [boost] C++0x and MSVC 10
From: Zachary Turner (divisortheory_at_[hidden])
Date: 2010-02-14 22:30:40


Playing with the release candidate of MSVC 10, and I'm noticing boost 1.42.0
is not using any C++0x features. Has this been discussed before, or is
there a reason for this? Taking a peek at
boost/config/compiler/visualc.hpp, I see the following:

#if _MSC_VER < 1600
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_DECLTYPE
#define BOOST_NO_LAMBDAS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_NULLPTR
#endif // _MSC_VER < 1600

// C++0x features not supported by any versions
#define BOOST_NO_CHAR16_T
#define BOOST_NO_CHAR32_T
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES

It almost appears as if the #else was simply forgotten on the first #if.
 Can't we safely change the first conditional to the following?

#if _MSC_VER < 1600
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_DECLTYPE
#define BOOST_NO_LAMBDAS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_NULLPTR
#else
#define BOOST_HAS_AUTO_DECLARATIONS
#define BOOST_HAS_AUTO_MULTIDECLARATIONS
#define BOOST_HAS_DECLTYPE
#define BOOST_HAS_LAMBDAS
#define BOOST_HAS_RVALUE_REFERENCES
#define BOOST_HAS_STATIC_ASSERT
#define BOOST_HAS_NULLPTR
#endif // _MSC_VER < 1600

Zach


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk