+
@@ -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_CONST For
- 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 @@
Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
Maddock
-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