diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index e1fc36f2..e90f2701 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -27,14 +27,16 @@ Boost Macro Reference
-
Macros - that describe defects
+
Macros + that describe C++03 defects
Macros that describe optional features
-
Macros - that describe possible C++0x features
-
Macros - that describe C++0x features not supported
+
Macros + that describe possible C++ future features
+
Macros + that describe C++11 features not supported
+
Macros + that allow use of C++11 features with C++03 compilers
Boost Helper Macros
Boost @@ -44,13 +46,13 @@

-Macros - that describe defects +Macros + that describe C++03 defects

- The following macros all describe features that are required by the C++ standard, - if one of the following macros is defined, then it represents a defect in - the compiler's conformance with the standard. + The following macros all describe features that are required by the C++03 + standard, if one of the following macros is defined, then it represents a + defect in the compiler's conformance with the 2003 standard.

@@ -2235,13 +2237,12 @@

- The following macros describe features that are likely to be included in - the upcoming ISO C++ standard, C++0x, but have not yet been approved for - inclusion in the language. + The following macros describe features that may be included in some future + ISO C++ standard, but have not yet been approved for inclusion in the language.

@@ -2276,12 +2277,12 @@

- The following macros describe features in the upcoming ISO C++ standard, - C++0x, that are not yet supported by a particular compiler or library. + The following macros describe features in the 2011 ISO C++ standard, formerly + known as C++0x, that are not yet supported by a particular compiler or library.

@@ -2877,6 +2878,159 @@
+

+ The following macros allow use of C++11 features even with compilers that + do not yet provide compliant C++11 support. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Macro +

+
+

+ Section +

+
+

+ Description +

+
+

+ BOOST_CONSTEXPR +

+
+

+ 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();
+
+

+ with: +

+
BOOST_CONSTEXPR tuple();
+
+

+

+
+

+ BOOST_CONSTEXPR_OR_CONST +

+
+

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

+
static constexpr UIntType xor_mask = a;
+
+

+ with: +

+
static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
+
+

+

+
+

+ BOOST_STATIC_CONSTEXPR +

+
+

+ This is a shortcut for static + BOOST_CONSTEXPR_OR_CONSTFor + example, when defining const expr variables replace: +

+
static constexpr UIntType xor_mask = a;
+
+

+ with: +

+
BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
+
+

+

+
+

+ +

+
BOOST_NOEXCEPT
+BOOST_NOEXCEPT_IF(Predicate)
+BOOST_NOEXCEPT_EXPR(Expression)
+
+

+

+
+

+ If BOOST_NO_NOEXCEPT + is defined (i.e. C++03 compliant compilers) these macros are defined + as: +

+
+

+ +

+
#define BOOST_NOEXCEPT
+#define BOOST_NOEXCEPT_IF(Predicate)
+#define BOOST_NOEXCEPT_EXPR(Expression) false
+
+

+

+
+

+ If BOOST_NO_NOEXCEPT + is not defined (i.e. C++11 compliant compilers) they are defined + as: +

+
+

+ +

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

+

+
+
+
+
+

Boost Helper Macros

@@ -3237,71 +3391,34 @@

- BOOST_CONSTEXPR + BOOST_FORCEINLINE

- 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: + This macro can be used in place of the inline + keyword to instruct the compiler that a function should always + be inlined. Overuse of this macro can lead to significant bloat, + while good use can increase performance in certain cases, such + as computation-intensive code built through generative programming + techniques. +

+

+ Usage example:

-
constexpr tuple();
-
-

- with: -

-
BOOST_CONSTEXPR tuple();
+
template<class T>
+BOOST_FORCEINLINE T& f(T& t)
+{
+    return t;
+}
 

- - - -

- BOOST_CONSTEXPR_OR_CONST -

- - -

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

-
static constexpr UIntType xor_mask = a;
-
-

- with: -

-
static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
-
-

-

- - - - -

- BOOST_STATIC_CONSTEXPR -

- - -

- This is a shortcut for static - BOOST_CONSTEXPR_OR_CONSTFor - example, when defining const expr variables replace: -

-
static constexpr UIntType xor_mask = a;
-
-

- with: -

-
BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
-
-

+ Note that use of this macro can lead to cryptic error messages + with some compilers. Consider defining it to inline + before including the Boost.Config header in order to be able to + debug errors more easily.

diff --git a/doc/html/index.html b/doc/html/index.html index 8ba9dc99..9dc678b1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -29,7 +29,7 @@
- +

Last revised: July 13, 2011 at 18:00:55 GMT

Last revised: October 11, 2011 at 17:21:29 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 07b13c14..c5dad035 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -16,11 +16,11 @@ [#config_defects] -[section Macros that describe defects] +[section Macros that describe C++03 defects] -The following macros all describe features that are required by the C++ standard, +The following macros all describe features that are required by the C++03 standard, if one of the following macros is defined, then it represents a defect in the -compiler's conformance with the standard. +compiler's conformance with the 2003 standard. [table @@ -514,11 +514,10 @@ standard). [endsect] -[section Macros that describe possible C++0x features] +[section Macros that describe possible C++ future features] -The following macros describe features that are likely to be included in the -upcoming ISO C++ standard, C++0x, but have not yet been approved for inclusion -in the language. +The following macros describe features that may be included in some future +ISO C++ standard, but have not yet been approved for inclusion in the language. [table @@ -531,9 +530,9 @@ The compiler supports concepts. [endsect] -[section Macros that describe C++0x features not supported] +[section Macros that describe C++11 features not supported] -The following macros describe features in the upcoming ISO C++ standard, C++0x, +The following macros describe features in the 2011 ISO C++ standard, formerly known as C++0x, that are not yet supported by a particular compiler or library. [table @@ -641,6 +640,76 @@ variadic macros. [endsect] +[#config_11_for_03] + +[section Macros that allow use of C++11 features with C++03 compilers] + +The following macros allow use of C++11 features even with compilers that do not yet +provide compliant C++11 support. + +[table +[[Macro ][Section ][ Description ]] + +[[`BOOST_CONSTEXPR`][ +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(); +`` +with: +`` + BOOST_CONSTEXPR tuple(); +`` +]] +[[`BOOST_CONSTEXPR_OR_CONST`][ +Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr` +elsewhere. For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a; +`` +]] +[[`BOOST_STATIC_CONSTEXPR`][ +This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + BOOST_STATIC_CONSTEXPR UIntType xor_mask = a; +`` +]] +[[ +`` + BOOST_NOEXCEPT + BOOST_NOEXCEPT_IF(Predicate) + BOOST_NOEXCEPT_EXPR(Expression) +`` +][ +If `BOOST_NO_NOEXCEPT` is defined (i.e. C++03 compliant compilers) these macros are defined as: +[: +`` + #define BOOST_NOEXCEPT + #define BOOST_NOEXCEPT_IF(Predicate) + #define BOOST_NOEXCEPT_EXPR(Expression) false +`` +] +If `BOOST_NO_NOEXCEPT` is not defined (i.e. C++11 compliant compilers) they are defined as: +[: +`` + #define BOOST_NOEXCEPT noexcept + #define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate)) + #define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression)) +`` +] +]] +] + +[endsect] + [#config_helpers] [section Boost Helper Macros] @@ -820,37 +889,25 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally used to create a mangled name in combination with a predefined macro such a \_\_LINE__. ]] -[[`BOOST_CONSTEXPR`][ -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: +[[`BOOST_FORCEINLINE`][ +This macro can be used in place of the `inline` keyword to instruct the compiler +that a function should always be inlined. +Overuse of this macro can lead to significant bloat, while good use can increase +performance in certain cases, such as computation-intensive code built through +generative programming techniques. + +Usage example: `` - constexpr tuple(); -`` -with: -`` - BOOST_CONSTEXPR tuple(); -`` -]] -[[`BOOST_CONSTEXPR_OR_CONST`][ -Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr` -elsewhere. For example, when defining const expr variables replace: -`` - static constexpr UIntType xor_mask = a; -`` -with: -`` - static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a; -`` -]] -[[`BOOST_STATIC_CONSTEXPR`][ -This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace: -`` - static constexpr UIntType xor_mask = a; -`` -with: -`` - BOOST_STATIC_CONSTEXPR UIntType xor_mask = a; + template + BOOST_FORCEINLINE T& f(T& t) + { + return t; + } `` + +Note that use of this macro can lead to cryptic error messages with some compilers. +Consider defining it to `inline` before including the Boost.Config header in order to be +able to debug errors more easily. ]] ] diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 05b47fb4..ad021f40 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -145,11 +145,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc90: # define BOOST_LIB_TOOLSET "vc90" -#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600) +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1600) // vc10: # define BOOST_LIB_TOOLSET "vc100" +#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1700) + + // vc11: +# define BOOST_LIB_TOOLSET "vc110" + #elif defined(__BORLANDC__) // CBuilder 6: diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 9f4adf82..a183f34b 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -25,35 +25,65 @@ // Clang supports "long long" in all compilation modes. -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR +#if !__has_feature(cxx_auto_type) +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +#endif + +#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +#endif + +#if !__has_feature(cxx_constexpr) +# define BOOST_NO_CONSTEXPR +#endif #if !__has_feature(cxx_decltype) # define BOOST_NO_DECLTYPE #endif #define BOOST_NO_DECLTYPE_N3276 -#define BOOST_NO_DEFAULTED_FUNCTIONS + +#if !__has_feature(cxx_defaulted_functions) +# define BOOST_NO_DEFAULTED_FUNCTIONS +#endif #if !__has_feature(cxx_deleted_functions) # define BOOST_NO_DELETED_FUNCTIONS #endif -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS - -#if !__has_feature(cxx_default_function_template_args) - #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#if !__has_feature(cxx_explicit_conversions) +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #endif -#define BOOST_NO_INITIALIZER_LISTS -#define BOOST_NO_LAMBDAS -#define BOOST_NO_NOEXCEPT -#define BOOST_NO_NULLPTR -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +#if !__has_feature(cxx_default_function_template_args) +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + +#if !__has_feature(cxx_generalized_initializers) +# define BOOST_NO_INITIALIZER_LISTS +#endif + +#if !__has_feature(cxx_lambdas) +# define BOOST_NO_LAMBDAS +#endif + +#if !__has_feature(cxx_noexcept) +# define BOOST_NO_NOEXCEPT +#endif + +#if !__has_feature(cxx_nullptr) +# define BOOST_NO_NULLPTR +#endif + +#if !__has_feature(cxx_raw_string_literals) +# define BOOST_NO_RAW_LITERALS +#endif + +#if !__has_feature(cxx_generalized_initializers) +# define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +#endif #if !__has_feature(cxx_rvalue_references) # define BOOST_NO_RVALUE_REFERENCES @@ -67,8 +97,13 @@ # define BOOST_NO_STATIC_ASSERT #endif -#define BOOST_NO_TEMPLATE_ALIASES -#define BOOST_NO_UNICODE_LITERALS +#if !__has_feature(cxx_alias_templates) +# define BOOST_NO_TEMPLATE_ALIASES +#endif + +#if !__has_feature(cxx_unicode_literals) +# define BOOST_NO_UNICODE_LITERALS +#endif #if !__has_feature(cxx_variadic_templates) # define BOOST_NO_VARIADIC_TEMPLATES diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index eb4d8140..f62d45ab 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -221,6 +221,21 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_AUTO_MULTIDECLARATIONS #endif +// icl Version 12.1.0.233 Build 20110811 and possibly some other builds +// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed. +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200) +# undef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +# undef BOOST_NO_NULLPTR +# undef BOOST_NO_RVALUE_REFERENCES +# undef BOOST_NO_SFINAE_EXPR +# undef BOOST_NO_TEMPLATE_ALIASES +# undef BOOST_NO_VARIADIC_TEMPLATES + +// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/ +// continues to list scoped enum support as "Partial" +//# undef BOOST_NO_SCOPED_ENUMS +#endif + #if (BOOST_INTEL_CXX_VERSION < 1200) // // fenv.h appears not to work with Intel prior to 12.0: diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index b9c81757..1a13f0db 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -236,6 +236,8 @@ # define BOOST_COMPILER_VERSION evc9 # elif _MSC_VER == 1600 # define BOOST_COMPILER_VERSION evc10 +# elif _MSC_VER == 1700 +# define BOOST_COMPILER_VERSION evc11 # else # if defined(BOOST_ASSERT_CONFIG) # error "Unknown EVC++ compiler version - please run the configure tests and report the results" @@ -259,6 +261,8 @@ # define BOOST_COMPILER_VERSION 9.0 # elif _MSC_VER == 1600 # define BOOST_COMPILER_VERSION 10.0 +# elif _MSC_VER == 1700 +# define BOOST_COMPILER_VERSION 11.0 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -273,8 +277,8 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 1600 (VC10, aka 2010): -#if (_MSC_VER > 1600) +// last known and checked version is 1700 (VC11, aka 2011): +#if (_MSC_VER > 1700) # 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/suffix.hpp b/include/boost/config/suffix.hpp index 7e5d4d4d..72a0dc95 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -635,6 +635,20 @@ namespace std{ using ::type_info; } #define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y) #define BOOST_DO_JOIN2( X, Y ) X##Y +// +// Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR +// These aid the transition to C++11 while still supporting C++03 compilers +// +#ifdef BOOST_NO_NOEXCEPT +# define BOOST_NOEXCEPT +# define BOOST_NOEXCEPT_IF(Predicate) +# define BOOST_NOEXCEPT_EXPR(Expression) false +#else +# define BOOST_NOEXCEPT noexcept +# define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate)) +# define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression)) +#endif + // // Set some default values for compiler/library/platform names. // These are for debugging config setup only: @@ -674,5 +688,17 @@ namespace std{ using ::type_info; } #define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST +// BOOST_FORCEINLINE ---------------------------------------------// +// Macro to use in place of 'inline' to force a function to be inline +#if !defined(BOOST_FORCEINLINE) +# if defined(_MSC_VER) +# define BOOST_FORCEINLINE __forceinline +# elif defined(__GNUC__) && __GNUC__ > 3 +# define BOOST_FORCEINLINE inline __attribute__ ((always_inline)) +# else +# define BOOST_FORCEINLINE inline +# endif +#endif + #endif diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 2c10d7f3..811c052a 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Wed Jul 13 18:50:14 2011 +# This file was automatically generated on Sun Nov 27 09:43:19 2011 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the diff --git a/test/boost_has_ftime.ipp b/test/boost_has_ftime.ipp index 70964481..ff04baf9 100644 --- a/test/boost_has_ftime.ipp +++ b/test/boost_has_ftime.ipp @@ -14,10 +14,9 @@ namespace boost_has_ftime{ -void f() +void f(FILETIME) { // this is never called, it just has to compile: - FILETIME ft; } int test() diff --git a/test/boost_no_char16_t.ipp b/test/boost_no_char16_t.ipp index 6b8956da..27d49c62 100644 --- a/test/boost_no_char16_t.ipp +++ b/test/boost_no_char16_t.ipp @@ -13,9 +13,19 @@ namespace boost_no_char16_t { +// Microsoft VC++ 2010, and possibly other compilers, provides +// a typedef for char16_t rather than a new type. We want that +// to be an error, so provide an overloaded function that will +// be ambiguous if char16_t is just a typedef. +void f(const char16_t*){} +void f(const unsigned short*){} +void f(const unsigned int*){} +void f(const unsigned long*){} + int test() { - const char16_t* p = u"abc"; + const char16_t* p; + f(p); return 0; } diff --git a/test/boost_no_char32_t.ipp b/test/boost_no_char32_t.ipp index cee99a64..5dfcd15d 100644 --- a/test/boost_no_char32_t.ipp +++ b/test/boost_no_char32_t.ipp @@ -12,9 +12,19 @@ namespace boost_no_char32_t { +// Microsoft VC++ 2010, and possibly other compilers, provides +// a typedef for char32_t rather than a new type. We want that +// to be an error, so provide an overloaded function that will +// be ambiguous if char16_t is just a typedef. +void f(const char32_t*){} +void f(const unsigned short*){} +void f(const unsigned int*){} +void f(const unsigned long*){} + int test() { - const char32_t* p = U"abc"; + const char32_t* p; + f(p); return 0; } diff --git a/test/boost_no_constexpr.ipp b/test/boost_no_constexpr.ipp index c246e234..bc0ad7cc 100644 --- a/test/boost_no_constexpr.ipp +++ b/test/boost_no_constexpr.ipp @@ -12,6 +12,8 @@ namespace boost_no_constexpr { +void quiet_warning(int){} + constexpr int square(int x) { return x * x; } // from N2235 // from 5.19: @@ -37,6 +39,7 @@ X
xx; // OK: unique conversion to int int test() { int i = square(5); + quiet_warning(i); return 0; } diff --git a/test/boost_no_decltype.ipp b/test/boost_no_decltype.ipp index db1aae39..e67f55af 100644 --- a/test/boost_no_decltype.ipp +++ b/test/boost_no_decltype.ipp @@ -13,6 +13,8 @@ namespace boost_no_decltype { +void quiet_warning(int){} + struct test_class { test_class() {} @@ -39,6 +41,7 @@ int test() { int i; decltype(i) j; +// quiet_warning(j); decltype(get_test_class()) k; #ifndef _MSC_VER // Although the VC++ decltype is buggy, we none the less enable support, diff --git a/test/boost_no_defaulted_functions.ipp b/test/boost_no_defaulted_functions.ipp index d6e79762..fcf02fd0 100644 --- a/test/boost_no_defaulted_functions.ipp +++ b/test/boost_no_defaulted_functions.ipp @@ -11,7 +11,7 @@ // DESCRIPTION: The compiler does not support C++0x defaulted functions #if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) -# error Defaulted functions aren't really supported in non-C++0x mode +# error Defaulted functions are not supported in non-C++0x mode #endif namespace boost_no_defaulted_functions { diff --git a/test/boost_no_deleted_functions.ipp b/test/boost_no_deleted_functions.ipp index 21693eb8..00397dff 100644 --- a/test/boost_no_deleted_functions.ipp +++ b/test/boost_no_deleted_functions.ipp @@ -11,7 +11,7 @@ // DESCRIPTION: The compiler does not support C++0x =delete functions #if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) -# error Deleted functions aren't really supported in non-C++0x mode +# error Deleted functions are not supported in non-C++0x mode #endif namespace boost_no_deleted_functions { diff --git a/test/boost_no_explicit_cvt_ops.ipp b/test/boost_no_explicit_cvt_ops.ipp index a040d41e..c0d68c45 100644 --- a/test/boost_no_explicit_cvt_ops.ipp +++ b/test/boost_no_explicit_cvt_ops.ipp @@ -11,11 +11,13 @@ // DESCRIPTION: The compiler does not support C++0x explicit conversion operators #if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) -# error This feature isn't really available in non-C++0x mode +# error This feature is not available in non-C++0x mode #endif namespace boost_no_explicit_conversion_operators { +void quiet_warning(int){} + struct foo { explicit operator int() { return 1; } }; @@ -24,6 +26,7 @@ int test() { foo f; int i = int(f); + quiet_warning(i); return 0; } diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp index 22897e1e..5bc58c22 100644 --- a/test/boost_no_initializer_lists.ipp +++ b/test/boost_no_initializer_lists.ipp @@ -16,6 +16,8 @@ namespace boost_no_initializer_lists { +void quiet_warning(const std::initializer_list&){} + void f(std::initializer_list) { } @@ -25,6 +27,7 @@ int test() std::vector v{"once", "upon", "a", "time"}; // See C++ std 8.5.4 f( { 1, 2, 3, 4 } ); std::initializer_list x = { 1, 2 }; + quiet_warning(x); return 0; } diff --git a/test/boost_no_lambdas.ipp b/test/boost_no_lambdas.ipp index 69216e05..3f6ae2b0 100644 --- a/test/boost_no_lambdas.ipp +++ b/test/boost_no_lambdas.ipp @@ -11,7 +11,7 @@ // DESCRIPTION: The compiler does not support the C++0x lambda feature #if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) -# error This feature isn't really available in non-C++0x mode +# error This feature is not available in non-C++0x mode #endif namespace boost_no_lambdas { diff --git a/test/boost_no_noexcept.ipp b/test/boost_no_noexcept.ipp index 91f2b01a..f041ef41 100644 --- a/test/boost_no_noexcept.ipp +++ b/test/boost_no_noexcept.ipp @@ -11,12 +11,15 @@ namespace boost_no_noexcept { +void quiet_warning(bool){} + int f() noexcept ; int g() noexcept( noexcept( f() ) ) ; int test() { bool b = noexcept( g() ); + quiet_warning(b); return 0; } diff --git a/test/boost_no_nullptr.ipp b/test/boost_no_nullptr.ipp index 254162c9..dd06f7fd 100644 --- a/test/boost_no_nullptr.ipp +++ b/test/boost_no_nullptr.ipp @@ -12,9 +12,12 @@ namespace boost_no_nullptr { +void quiet_warning(const int*){} + int test() { int * p = nullptr; + quiet_warning(p); return 0; } diff --git a/test/boost_no_raw_literals.ipp b/test/boost_no_raw_literals.ipp index 83aa3bc7..3362db30 100644 --- a/test/boost_no_raw_literals.ipp +++ b/test/boost_no_raw_literals.ipp @@ -12,10 +12,15 @@ namespace boost_no_raw_literals { +void quiet_warning(const char*){} +void quiet_warning(const wchar_t*){} + int test() { const char* s = R"(abc)"; + quiet_warning(s); const wchar_t* ws = LR"(abc)"; + quiet_warning(ws); return 0; } diff --git a/test/boost_no_std_typeinfo.ipp b/test/boost_no_std_typeinfo.ipp index 01d5227f..a55a94d8 100644 --- a/test/boost_no_std_typeinfo.ipp +++ b/test/boost_no_std_typeinfo.ipp @@ -13,10 +13,12 @@ namespace boost_no_std_typeinfo { +void quiet_warning(const std::type_info*){} int test() { std::type_info * p = 0; + quiet_warning(p); return 0; } diff --git a/test/boost_no_unicode_literals.ipp b/test/boost_no_unicode_literals.ipp index 6c949cfb..ec8963ba 100644 --- a/test/boost_no_unicode_literals.ipp +++ b/test/boost_no_unicode_literals.ipp @@ -12,10 +12,14 @@ namespace boost_no_unicode_literals { +void quiet_warning(const char*){} int test() { const char* c8 = u8""; + const char16_t* c16 = u""; + const char32_t* c32 = U""; + quiet_warning(c8); return 0; } diff --git a/test/boost_no_variadic_macros.ipp b/test/boost_no_variadic_macros.ipp index 0382c21a..7df683b3 100644 --- a/test/boost_no_variadic_macros.ipp +++ b/test/boost_no_variadic_macros.ipp @@ -49,13 +49,15 @@ namespace boost_no_variadic_macros { +void quiet_warning(int){} + template struct test_variadic_macro_class {}; int test() { int x = TEST_VARIADIC_MACRO_STRIP_PARENS(3); - + quiet_warning(x); return 0; } diff --git a/test/config_info.cpp b/test/config_info.cpp index c0612bfc..ae9578df 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1102,6 +1102,10 @@ void print_boost_macros() + + + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); @@ -1111,6 +1115,8 @@ void print_boost_macros() PRINT_MACRO(BOOST_CONSTEXPR); PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST); PRINT_MACRO(BOOST_STATIC_CONSTEXPR); + PRINT_MACRO(BOOST_NOEXCEPT); + PRINT_MACRO(BOOST_FORCEINLINE); } void print_separator() diff --git a/test/config_test.cpp b/test/config_test.cpp index 8e909be7..3f8cb588 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed Jul 13 18:50:14 2011 +// This file was automatically generated on Sun Nov 27 09:43:19 2011 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the