From 0a34d7b07e592663a407ee408dc6c943ee2743a8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Sep 2013 16:55:51 +0000 Subject: [PATCH] Merge all Boost.Config changes from Trunk. [SVN r85725] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 310 +++++++++++++++--- .../guidelines_for_boost_authors.html | 14 +- doc/html/boost_config/rationale.html | 10 +- doc/html/index.html | 30 +- doc/macro_reference.qbk | 4 +- include/boost/config/auto_link.hpp | 8 +- include/boost/config/compiler/gcc.hpp | 8 +- include/boost/config/compiler/intel.hpp | 52 ++- include/boost/config/compiler/nvcc.hpp | 12 - include/boost/config/compiler/pgi.hpp | 3 + include/boost/config/compiler/visualc.hpp | 31 +- .../boost/config/select_compiler_config.hpp | 10 +- include/boost/config/stdlib/dinkumware.hpp | 8 +- 14 files changed, 390 insertions(+), 114 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index ae598f9d..e3cd5555 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
PrevUpHome
-
+
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 7b391ff2..cd60c7f7 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,11 +22,11 @@
PrevUpHomeNext
-
+
-
+ -
+

Macros that describe C++03 defects @@ -556,9 +556,9 @@ max_digits10 the number of decimal digits that are required to make sure that two distinct values of the type have distinct decimal representations. template<> - class numeric_limits<char16_t>;, see also BOOST_NO_CXX11_CHAR16_T, + class numeric_limits<char16_t>;, see also BOOST_NO_CXX11_CHAR16_T, template<> - class numeric_limits<char32_t>; see also BOOST_NO_CXX11_CHAR32_T. + class numeric_limits<char32_t>; see also BOOST_NO_CXX11_CHAR32_T. Replaces BOOST_NO_NUMERIC_LIMITS_LOWEST.

@@ -1320,7 +1320,7 @@

-
+

Macros that describe optional features @@ -1642,6 +1642,27 @@ + +

+ BOOST_HAS_PRAGMA_ONCE +

+ + +

+ Compiler +

+ + +

+ The compiler recognizes the #pragma + once directive which + tells that the containing header should be included only once while + preprocessing the current translation unit. The pragma may improve + compile times of large projects with some compilers. +

+ + +

BOOST_HAS_PTHREAD_DELAY_NP @@ -2288,7 +2309,7 @@

-
+
-
+

Macros that describe C++11 features not supported @@ -2356,6 +2377,19 @@ + +

+ BOOST_NO_CXX11_ALIGNAS +

+ + +

+ The compiler does not support the alignas + keyword. +

+ + +

BOOST_NO_CXX11_ALLOCATOR @@ -2610,6 +2644,18 @@ + +

+ BOOST_NO_CXX11_INLINE_NAMESPACES +

+ + +

+ The compiler does not support inline namespaces. +

+ + +

BOOST_NO_CXX11_SMART_PTR @@ -2662,7 +2708,7 @@

- The compiler does not support type char16_t. + The compiler does not support type char16_t.

@@ -2674,7 +2720,7 @@

- The compiler does not support type char32_t. + The compiler does not support type char32_t.

@@ -2698,7 +2744,7 @@

- The compiler does not support constexpr. + The compiler does not support constexpr.

@@ -2710,7 +2756,7 @@

- The compiler does not support decltype. + The compiler does not support decltype.

@@ -2722,7 +2768,7 @@

- The compiler does not support the extension to decltype + The compiler does not support the extension to decltype described in N3276, accepted in Madrid, March 2011.

@@ -2840,7 +2886,7 @@

- The compiler does not support noexcept. + The compiler does not support noexcept.

@@ -2852,7 +2898,7 @@

- The compiler does not support nullptr. + The compiler does not support nullptr.

@@ -2912,7 +2958,7 @@

- The compiler does not support static_assert. + The compiler does not support static_assert.

@@ -2930,6 +2976,20 @@ + +

+ BOOST_NO_CXX11_TRAILING_RESULT_TYPES +

+ + +

+ The compiler does not support the new function result type specification + syntax (e.g. auto foo(T) + -> T;). +

+ + +

BOOST_NO_CXX11_UNICODE_LITERALS @@ -2994,7 +3054,7 @@

-
+

Macros that allow use of C++11 features with C++03 compilers @@ -3022,6 +3082,36 @@ + +

+ BOOST_ALIGNMENT(X), BOOST_NO_ALIGNMENT +

+ + +

+ Some compilers don't support the alignas + keyword but provide other means to specify alignment (usually, + through compiler-specific attributes). The macro BOOST_ALIGNMENT(X) + will expand to the alignas(X) keyword if the compiler supports + it or to some compiler-specific attribute to achieve the specified + alignment. If no such compiler-specific attribute is known then + BOOST_ALIGNMENT(X) will expand to nothing and BOOST_NO_ALIGNMENT will be defined. + Unlike native alignas, + X must always be + a compile-time integer constant. The macro can be used to specify + alignment of types and data: +

+
struct BOOST_ALIGNMENT(16) my_data
+{
+    char c[16];
+};
+BOOST_ALIGNMENT(8) int arr[32];
+
+

+

+ + +

BOOST_CONSTEXPR @@ -3029,11 +3119,11 @@

- Some compilers don't support the use of constexpr. - This macro expands to nothing on those compilers, and constexpr elsewhere. For example, + Some compilers don't support the use of constexpr. + This macro expands to nothing on those compilers, and constexpr elsewhere. For example, when defining a constexpr function or constructor replace:

-
constexpr tuple();
+
constexpr tuple();
 

with: @@ -3052,12 +3142,12 @@

- Some compilers don't support the use of constexpr. + Some compilers don't support the use of constexpr. This macro expands to const - on those compilers, and constexpr + on those compilers, and constexpr elsewhere. For example, when defining const expr variables replace:

-
static constexpr UIntType xor_mask = a;
+
static constexpr UIntType xor_mask = a;
 

with: @@ -3080,7 +3170,7 @@ BOOST_CONSTEXPR_OR_CONST. For example, when defining const expr variables replace:

-
static constexpr UIntType xor_mask = a;
+
static constexpr UIntType xor_mask = a;
 

with: @@ -3092,6 +3182,89 @@ + +

+ BOOST_DEFAULTED_FUNCTION(fun, body) +

+ + +

+ This macro is intended to be used within a class definition in + order to declare a default implementation of function fun. For the compilers that do + not support C++11 defaulted functions the macro will expand into + an inline function definition with the body + implementation. For example: +

+
struct my_struct
+{
+    BOOST_DEFAULTED_FUNCTION(my_struct(), {})
+};
+
+

+ is equivalent to: +

+
struct my_struct
+{
+    my_struct() = default;
+};
+
+

+ or: +

+
struct my_struct
+{
+    my_struct() {}
+};
+
+

+

+ + + + +

+ BOOST_DELETED_FUNCTION(fun) +

+ + +

+ This macro is intended to be used within a class definition in + order to declare a deleted function fun. + For the compilers that do not support C++11 deleted functions the + macro will expand into a private function declaration with no definition. + Since the macro may change the access mode, it is recommended to + use this macro at the end of the class definition. For example: +

+
struct noncopyable
+{
+    BOOST_DELETED_FUNCTION(noncopyable(noncopyable const&))
+    BOOST_DELETED_FUNCTION(noncopyable& operator= (noncopyable const&))
+};
+
+

+ is equivalent to: +

+
struct noncopyable
+{
+    noncopyable(noncopyable const&) = delete;
+    noncopyable& operator= (noncopyable const&) = delete;
+};
+
+

+ or: +

+
struct noncopyable
+{
+private:
+    noncopyable(noncopyable const&);
+    noncopyable& operator= (noncopyable const&);
+};
+
+

+

+ + +

@@ -3128,10 +3301,10 @@

-
#define BOOST_NOEXCEPT noexcept
-#define BOOST_NOEXCEPT_OR_NOTHROW noexcept
-#define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
-#define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
+
#define BOOST_NOEXCEPT noexcept
+#define BOOST_NOEXCEPT_OR_NOTHROW noexcept
+#define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
+#define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
 

@@ -3160,7 +3333,7 @@

-
+

Boost Helper Macros @@ -3601,10 +3774,65 @@

+ + +

+ BOOST_NOINLINE +

+ + +

+ This macro can be used in place of the inline + keyword to instruct the compiler that a function should never be + inlined. One should typically use this macro to mark functions + that are unlikely to be called, such as error handling routines. +

+

+ Usage example: +

+
BOOST_NOINLINE void handle_error(const char* descr)
+{
+    // ...
+}
+
+

+

+ + + + +

+ BOOST_LIKELY(X) + BOOST_UNLIKELY(X) +

+ + +

+ These macros communicate to the compiler that the conditional expression + X is likely or + unlikely to yield a positive result. The expression should result + in a boolean value. The result of the macro is an integer or boolean + value equivalent to the result of X. +

+

+ The macros are intended to be used in branching statements. The + additional hint they provide can be used by the compiler to arrange + the compiled code of the branches more effectively. +

+

+ Usage example: +

+
if (BOOST_UNLIKELY(ptr == NULL))
+  handle_error("ptr is NULL");
+
+

+

+ +

-
+

Boost Informational Macros @@ -3905,7 +4133,7 @@

-
+

Boost Deprecated Macros @@ -4920,12 +5148,12 @@

- BOOST_HAS_CHAR_16_T + BOOST_HAS_CHAR16_T

- BOOST_NO_CXX11_CHAR_16_T + BOOST_NO_CXX11_CHAR16_T (negated)

@@ -4940,12 +5168,12 @@

- BOOST_HAS_CHAR_32_T + BOOST_HAS_CHAR32_T

- BOOST_NO_CXX11_CHAR_32_T + BOOST_NO_CXX11_CHAR32_T (negated)

@@ -4960,12 +5188,12 @@

-
+
-
+
Macros controlling shared library symbol visibility
ABI @@ -4993,7 +5221,7 @@ See Guidelines for Authors of Boost Libraries Containing Separate Source

-
+
-
+

ABI Fixing @@ -5206,7 +5434,7 @@ to point to their own prefix/suffix headers if they so wish.

-
+

Automatic library selection diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index f64ef39b..1785ef99 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,12 +22,12 @@
PrevUpHomeNext
-
+
-
+ -
+

Disabling Compiler Warnings @@ -182,7 +182,7 @@

-
+

Adding New Defect Macros @@ -285,7 +285,7 @@

-
+

Adding New Feature Test Macros @@ -309,7 +309,7 @@ <unistd.h>).

-
+

Modifying the Boost Configuration Headers diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index d795c63c..8dc221fb 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -22,11 +22,11 @@
PrevUpHomeNext
-
+
-
+ @@ -39,7 +39,7 @@ principles from the following article.

-
+
@@ -90,7 +90,7 @@ code must be provided.

-
+
diff --git a/doc/html/index.html b/doc/html/index.html index 8327b13e..273c21cf 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -39,7 +39,7 @@

Table of Contents

-
+
Configuring Boost for Your Platform
@@ -97,12 +97,12 @@
Acknowledgements
-
+
-
+ -
+

Using the default boost configuration @@ -140,7 +140,7 @@ and submitting a support request.

-
+

The <boost/config.hpp> header @@ -171,7 +171,7 @@ developers list.

-
+

Using the configure script @@ -313,7 +313,7 @@

-
+

User settable options @@ -679,12 +679,12 @@

-
+
-
+
Example 1: creating our own frozen configuration
Example @@ -723,7 +723,7 @@

The following usage examples represent just a few of the possibilities:

-
+

Example 1: creating our own frozen configuration @@ -755,7 +755,7 @@ yet supported by boost.

-
+

Example 2: skipping files that you don't need @@ -774,7 +774,7 @@ a dependency on two boost headers.

-
+
-
+

Testing the boost configuration @@ -951,7 +951,7 @@

- +

Last revised: April 28, 2013 at 17:55:14 GMT

Last revised: September 08, 2013 at 08:51:17 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 4133fa6f..40123e63 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -1246,8 +1246,8 @@ They will be removed in a future version of boost. [[`BOOST_HAS_STATIC_ASSERT`][`BOOST_NO_CXX11_STATIC_ASSERT` (negated)][Boost 1.53][]] [[`BOOST_HAS_VARIADIC_TMPL`][`BOOST_NO_CXX11_VARIADIC_TEMPLATES` (negated)][Boost 1.53][]] [[`BOOST_HAS_RVALUE_REFS`][`BOOST_NO_CXX11_RVALUE_REFERENCES` (negated)][Boost 1.53][]] -[[`BOOST_HAS_CHAR_16_T`][`BOOST_NO_CXX11_CHAR_16_T` (negated)][Boost 1.53][]] -[[`BOOST_HAS_CHAR_32_T`][`BOOST_NO_CXX11_CHAR_32_T` (negated)][Boost 1.53][]] +[[`BOOST_HAS_CHAR16_T`][`BOOST_NO_CXX11_CHAR16_T` (negated)][Boost 1.53][]] +[[`BOOST_HAS_CHAR32_T`][`BOOST_NO_CXX11_CHAR32_T` (negated)][Boost 1.53][]] ] [endsect] diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index e36d06a0..13cbad43 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -151,11 +151,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc10: # define BOOST_LIB_TOOLSET "vc100" -# elif defined(BOOST_MSVC) +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800) // vc11: # define BOOST_LIB_TOOLSET "vc110" +# elif defined(BOOST_MSVC) + + // vc12: +# define BOOST_LIB_TOOLSET "vc120" + # elif defined(__BORLANDC__) // CBuilder 6: @@ -421,3 +426,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # undef BOOST_DYN_LINK #endif + diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 2e9fbd47..aa628e5a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -95,13 +95,13 @@ // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, // so does not define _WIN32 or its variants. # define BOOST_HAS_DECLSPEC -# define BOOST_SYMBOL_EXPORT __attribute__((dllexport)) -# define BOOST_SYMBOL_IMPORT __attribute__((dllimport)) +# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__)) +# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__)) # else -# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) +# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default"))) # define BOOST_SYMBOL_IMPORT # endif -# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) +# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) #else // config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined # define BOOST_SYMBOL_EXPORT diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index faf6cbfe..3f0eaa18 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -106,7 +106,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -241,6 +241,42 @@ template<> struct assert_intrinsic_wchar_t {}; // continues to list scoped enum support as "Partial" //# undef BOOST_NO_CXX11_SCOPED_ENUMS #endif +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(_MSC_VER) +# undef BOOST_NO_CXX11_INLINE_NAMESPACES +# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This one generates internal compiler errors in multiprecision, disabled for now: +//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +// This one generates errors when used with conditional exception specifications, for example in multiprecision: +//# undef BOOST_NO_CXX11_NOEXCEPT +# undef BOOST_NO_CXX11_RANGE_BASED_FOR +# undef BOOST_NO_CXX11_SCOPED_ENUMS +# undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#endif +#if (BOOST_INTEL_CXX_VERSION >= 1310) +# undef BOOST_NO_SFINAE_EXPR +#endif +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1400) && !defined(_MSC_VER) +# undef BOOST_NO_CXX11_UNICODE_LITERALS +# undef BOOST_NO_CXX11_RAW_LITERALS +// This one generates errors when used with conditional exception specifications, for example in multiprecision: +//# undef BOOST_NO_CXX11_NOEXCEPT +// This breaks multiprecision: +//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# undef BOOST_NO_CXX11_HDR_THREAD +# undef BOOST_NO_CXX11_CHAR32_T +# undef BOOST_NO_CXX11_CHAR16_T +#endif + +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310) +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#endif + +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400) +// A regression in Intel's compiler means that seems to be broken in this release as well as : +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_TUPLE +#endif #if defined(_MSC_VER) && (_MSC_VER <= 1700) // @@ -251,7 +287,9 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS # define BOOST_NO_CXX11_TEMPLATE_ALIASES -# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# if(BOOST_INTEL_CXX_VERSION < 1310) +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# endif #endif #if (BOOST_INTEL_CXX_VERSION < 1200) @@ -261,9 +299,17 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_FENV_H #endif +#if defined(_MSC_VER) && (_MSC_VER >= 1600) +# define BOOST_HAS_STDINT_H +#endif + +#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) +# define BOOST_HAS_INT128 +#endif + // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1200) +#if (BOOST_INTEL_CXX_VERSION > 1310) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 03203fb5..bbe81f6e 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -14,15 +14,3 @@ // NVIDIA Specific support // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device #define BOOST_GPU_ENABLED __host__ __device__ - -// Boost support macro for NVCC -// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks -#ifdef __GNUC__ - -#include - -#elif defined(_MSC_VER) - -#include - -#endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 84de184f..d50cbef8 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -41,6 +41,9 @@ #define BOOST_HAS_THREADS #define BOOST_HAS_NRVO #define BOOST_HAS_LONG_LONG +#if defined(linux) || defined(__linux) || defined(__linux__) +# define BOOST_HAS_STDINT_H +#endif // options --enable-test wants undefined #undef BOOST_NO_STDC_NAMESPACE diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index db8b7d7b..df61d4b6 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -43,8 +43,9 @@ # error "Compiler not supported or configured - please reconfigure" #endif -/// Visual Studio has no fenv.h -#define BOOST_NO_FENV_H +#if _MSC_VER < 1800 +# define BOOST_NO_FENV_H +#endif #if _MSC_VER < 1400 // although a conforming signature for swprint exists in VC7.1 @@ -160,24 +161,25 @@ # define BOOST_HAS_STDINT_H #endif -// C++ features supported by VC++ 11 (aka 2012) +// C++11 features supported by VC++ 11 (aka 2012) // #if _MSC_VER < 1700 # define BOOST_NO_CXX11_RANGE_BASED_FOR # define BOOST_NO_CXX11_SCOPED_ENUMS #endif // _MSC_VER < 1700 -// C++11 features supported by VC++ 11 (aka 2012) November 2012 CTP -// Because the CTP is unsupported, unrelease, and only alpha quality, -// it is only supported if BOOST_MSVC_ENABLE_2012_NOV_CTP is defined. +// C++11 features supported by VC++ 12 (aka 2013). // -#if _MSC_FULL_VER < 170051025 || !defined(BOOST_MSVC_ENABLE_2012_NOV_CTP) +#if _MSC_VER < 1800 +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS # define BOOST_NO_CXX11_RAW_LITERALS -# define BOOST_NO_CXX11_VARIADIC_TEMPLATES -# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +# define BOOST_NO_CXX11_TEMPLATE_ALIASES # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES #endif // C++11 features not supported by any versions @@ -185,10 +187,7 @@ #define BOOST_NO_CXX11_CHAR32_T #define BOOST_NO_CXX11_CONSTEXPR #define BOOST_NO_CXX11_DECLTYPE_N3276 -#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#define BOOST_NO_CXX11_DELETED_FUNCTIONS #define BOOST_NO_CXX11_NOEXCEPT -#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TWO_PHASE_NAME_LOOKUP @@ -252,8 +251,10 @@ # define BOOST_COMPILER_VERSION 9.0 # elif _MSC_VER < 1700 # define BOOST_COMPILER_VERSION 10.0 -# elif _MSC_VER < 1800 +# elif _MSC_VER < 1800 # define BOOST_COMPILER_VERSION 11.0 +# elif _MSC_VER < 1900 +# define BOOST_COMPILER_VERSION 12.0 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -263,8 +264,8 @@ #endif // -// last known and checked version is 1700 (VC11, aka 2011): -#if (_MSC_VER > 1700) +// last known and checked version is 18.00.20827.3 (VC12 RC, aka 2013 RC): +#if (_MSC_VER > 1800 && _MSC_FULL_VER > 180020827) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 8683d658..0eeb7ad3 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -13,6 +13,12 @@ // locate which compiler we are using and define // BOOST_COMPILER_CONFIG as needed: +#if defined __CUDACC__ +// NVIDIA CUDA C++ compiler for GPU +# include "boost/config/compiler/nvcc.hpp" + +#endif + #if defined(__GCCXML__) // GCC-XML emulates other compilers, it has to appear first here! # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp" @@ -21,10 +27,6 @@ // EDG based Cray compiler: # define BOOST_COMPILER_CONFIG "boost/config/compiler/cray.hpp" -#elif defined __CUDACC__ -// NVIDIA CUDA C++ compiler for GPU -# define BOOST_COMPILER_CONFIG "boost/config/compiler/nvcc.hpp" - #elif defined __COMO__ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index cef6ff24..a8b68be7 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -110,7 +110,8 @@ # define BOOST_NO_CXX11_SMART_PTR #endif -#if (!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE) +#if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \ + && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610) # define BOOST_NO_CXX11_HDR_TUPLE #endif @@ -128,10 +129,11 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR #endif +// C++0x headers implemented in 610 (as shipped by Microsoft) // -// C++0x headers not yet (fully) implemented: -// +#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#endif #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER