From a01d4996bf5e97b6498fe9b242d2eed1d81b29fd Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Tue, 21 Feb 2017 22:03:15 +0100 Subject: [PATCH 01/36] support for IBM z/OS XL C/C++ (configure script & compiler/platform/stdlib headers) --- configure | 4 +- include/boost/config/compiler/xlcpp_zos.hpp | 200 ++++++++++++++++++ include/boost/config/platform/zos.hpp | 32 +++ .../boost/config/select_compiler_config.hpp | 8 +- .../boost/config/select_platform_config.hpp | 7 +- include/boost/config/select_stdlib_config.hpp | 5 + include/boost/config/stdlib/xlcpp_zos.hpp | 67 ++++++ include/boost/config/suffix.hpp | 20 +- test/boost_has_int128.ipp | 59 +++++- test/boost_no_auto_declarations.ipp | 5 +- test/boost_no_auto_multidecl.ipp | 5 +- tools/configure.in | 4 +- 12 files changed, 387 insertions(+), 29 deletions(-) create mode 100644 include/boost/config/compiler/xlcpp_zos.hpp create mode 100644 include/boost/config/platform/zos.hpp create mode 100644 include/boost/config/stdlib/xlcpp_zos.hpp diff --git a/configure b/configure index 82d3db96..27f9cfbe 100644 --- a/configure +++ b/configure @@ -2614,7 +2614,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr [A-Z] [a-z]` + namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` #echo file = $file #echo basename = $basename @@ -2777,7 +2777,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr [A-Z] [a-z]` + namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` # echo $file # echo $basename diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp new file mode 100644 index 00000000..4c8d3a26 --- /dev/null +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -0,0 +1,200 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Compiler setup for IBM z/OS XL C/C++ compiler. + +// Oldest compiler version currently supported is 2.1 (V2R1) +#if !defined(__IBMCPP__) || !defined(__COMPILER_VER__) || __COMPILER_VER__ < 0x42010000 +# error "Compiler not supported or configured - please reconfigure" +#endif + +#if __COMPILER_VER__ > 0x42010000 +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + +#define BOOST_COMPILER "IBM z/OS XL C/C++ version " BOOST_STRINGIZE(__COMPILER_VER__) +#define BOOST_XLCPP_ZOS __COMPILER_VER__ + +// ------------------------------------- + +#include // For __UU, __C99, __TR1, ... + +#if !defined(BOOST_XLCPP_ZOS_DO_NOT_GUESS) +# if (defined(__C99_MIXED_STRING_CONCAT) \ + && defined(__C99_MAX_LINE_NUMBER) \ + && defined(__C99_EMPTY_MACRO_ARGUMENTS) \ + && defined(__C99_LLONG) \ + && defined(__IBMCPP_C99_PREPROCESSOR) \ + && defined(__IBMCPP_C99_LONG_LONG) \ + && defined(__IBM_CHAR32_T__) \ + && defined(__IBM_CHAR16_T__) \ + && defined(__IBMCPP_VARIADIC_TEMPLATES) \ + && defined(__IBMCPP_STATIC_ASSERT) \ + && defined(__IBMCPP_SCOPED_ENUM) \ + && defined(__IBMCPP_RVALUE_REFERENCES) \ + && defined(__IBMCPP_RIGHT_ANGLE_BRACKET) \ + && defined(__IBMCPP_REFERENCE_COLLAPSING) \ + && defined(__IBMCPP_INLINE_NAMESPACE) \ + && defined(__IBMCPP_EXTENDED_FRIEND) \ + && defined(__IBMCPP_EXPLICIT_CONVERSION_OPERATORS) \ + && defined(__IBMCPP_DELEGATING_CTORS) \ + && defined(__IBMCPP_DECLTYPE) \ + && defined(__IBMCPP_CONSTEXPR) \ + && defined(__IBMCPP_AUTO_TYPEDEDUCTION) \ + ) +// According to documentation, the "defaulted and deleted functions" feature should be testable via the predefined macro __IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS. +// Unfortunately this doesn't work, the macro is actually never defined (compiler version V2R1). +// Guess: defaulted and deleted functions feature is active if ALL other C++11 features supported by the compiler are active. +# if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS) +# define __IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS 1 +# endif +# endif +#endif + +#if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS) +# define BOOST_NO_CXX11_DELETED_FUNCTIONS +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS +#endif + +// ------------------------------------- + +#if defined(__UU) || defined(__C99) || defined(__TR1) +# define BOOST_HAS_LOG1P +# define BOOST_HAS_EXPM1 +#endif + +#if defined(__C99) || defined(__TR1) +# define BOOST_HAS_STDINT_H +#else +# define BOOST_NO_FENV_H +#endif + +// ------------------------------------- + +#define BOOST_HAS_NRVO + +#if !defined(__RTTI_ALL__) +# define BOOST_NO_RTTI +#endif + +#if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + +#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL) +# define BOOST_HAS_LONG_LONG +#else +# define BOOST_NO_LONG_LONG +#endif + +#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL) || defined(_LP64) +# define BOOST_HAS_MS_INT64 +#endif + +#define BOOST_NO_SFINAE_EXPR + +#if defined(__IBMCPP_VARIADIC_TEMPLATES) +# define BOOST_HAS_VARIADIC_TMPL +#else +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + +#if defined(__IBMCPP_STATIC_ASSERT) +# define BOOST_HAS_STATIC_ASSERT +#else +# define BOOST_NO_CXX11_STATIC_ASSERT +#endif + +#if defined(__IBMCPP_RVALUE_REFERENCES) +# define BOOST_HAS_RVALUE_REFS +#else +# define BOOST_NO_CXX11_RVALUE_REFERENCES +#endif + +#if !defined(__IBMCPP_SCOPED_ENUM) +# define BOOST_NO_CXX11_SCOPED_ENUMS +#endif + +#define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS + +#if !defined(__IBMCPP_EXPLICIT_CONVERSION_OPERATORS) +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#endif + +#if !defined(__IBMCPP_DECLTYPE) +# define BOOST_NO_CXX11_DECLTYPE +#else +# define BOOST_HAS_DECLTYPE +#endif +#define BOOST_NO_CXX11_DECLTYPE_N3276 + +#if !defined(__IBMCPP_INLINE_NAMESPACE) +# define BOOST_NO_CXX11_INLINE_NAMESPACES +#endif + +#if !defined(__IBMCPP_AUTO_TYPEDEDUCTION) +# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CXX11_AUTO_DECLARATIONS +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#endif + +#if !defined(__IBM_CHAR32_T__) +# define BOOST_NO_CXX11_CHAR32_T +#endif +#if !defined(__IBM_CHAR16_T__) +# define BOOST_NO_CXX11_CHAR16_T +#endif + +#if !defined(__IBMCPP_CONSTEXPR) +# define BOOST_NO_CXX11_CONSTEXPR +#endif + +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_REF_QUALIFIERS +#define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX14_VARIABLE_TEMPLATES +#define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION +#define BOOST_NO_CXX14_AGGREGATE_NSDMI +#define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES +#define BOOST_NO_CXX14_GENERIC_LAMBDAS +#define BOOST_NO_CXX14_DIGIT_SEPARATORS +#define BOOST_NO_CXX14_DECLTYPE_AUTO +#define BOOST_NO_CXX14_CONSTEXPR +#define BOOST_NO_CXX14_BINARY_LITERALS + +// ------------------------------------- + +#define BOOST_SP_NO_SYNC + +// ------------------------------------- + +#if defined(__IBM_ATTRIBUTES) +# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) +# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +#endif + +extern "builtin" long __builtin_expect(long, long); + +#define BOOST_LIKELY(x) __builtin_expect((x) && true, 1) +#define BOOST_UNLIKELY(x) __builtin_expect((x) && true, 0) diff --git a/include/boost/config/platform/zos.hpp b/include/boost/config/platform/zos.hpp new file mode 100644 index 00000000..fa77999e --- /dev/null +++ b/include/boost/config/platform/zos.hpp @@ -0,0 +1,32 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Platform setup for IBM z/OS. + +#define BOOST_PLATFORM "IBM z/OS" + +#include // For __UU, __C99, __TR1, ... + +#if defined(__UU) +# define BOOST_HAS_GETTIMEOFDAY +#endif + +#if defined(_OPEN_THREADS) || defined(__SUSV3_THR) +# define BOOST_HAS_PTHREADS +# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# define BOOST_HAS_THREADS +#endif + +#if defined(__SUSV3) || defined(__SUSV3_THR) +# define BOOST_HAS_SCHED_YIELD +#endif + +#define BOOST_HAS_SIGACTION +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_DIRENT_H +#define BOOST_HAS_NL_TYPES_H diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 7a757084..a54cab78 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -92,8 +92,12 @@ // MPW MrCpp or SCpp # define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +// IBM z/OS XL C/C++ +# define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp_zos.hpp" + #elif defined(__ibmxl__) -// IBM XL C/C++ for Linux (Little Endian) +// IBM XL C/C++ for Linux (Little Endian) # define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp.hpp" #elif defined(__IBMCPP__) @@ -140,6 +144,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index 62fd818b..00d3c436 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -53,8 +53,12 @@ // MacOS # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" +#elif defined(__TOS_MVS__) +// IBM z/OS +# define BOOST_PLATFORM_CONFIG "boost/config/platform/zos.hpp" + #elif defined(__IBMCPP__) || defined(_AIX) -// IBM +// IBM AIX # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" #elif defined(__amigaos__) @@ -122,6 +126,7 @@ # include "boost/config/platform/win32.hpp" # include "boost/config/platform/beos.hpp" # include "boost/config/platform/macos.hpp" +# include "boost/config/platform/zos.hpp" # include "boost/config/platform/aix.hpp" # include "boost/config/platform/amigaos.hpp" # include "boost/config/platform/qnxnto.hpp" diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index e270a881..0baca79a 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -66,6 +66,10 @@ // MSL standard lib: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +// IBM z/OS XL C/C++ +# define BOOST_STDLIB_CONFIG "boost/config/stdlib/xlcpp_zos.hpp" + #elif defined(__IBMCPP__) // take the default VACPP std lib # define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp" @@ -98,6 +102,7 @@ # include "boost/config/stdlib/libstdcpp3.hpp" # include "boost/config/stdlib/sgi.hpp" # include "boost/config/stdlib/msl.hpp" +# include "boost/config/stdlib/xlcpp_zos.hpp" # include "boost/config/stdlib/vacpp.hpp" # include "boost/config/stdlib/modena.hpp" # include "boost/config/stdlib/dinkumware.hpp" diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp new file mode 100644 index 00000000..2f89638f --- /dev/null +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -0,0 +1,67 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Standard library setup for IBM z/OS XL C/C++ compiler. + +// Oldest library version currently supported is 2.1 (V2R1) +#if __TARGET_LIB__ < 0x42010000 +# error "Library version not supported or configured - please reconfigure" +#endif + +#if __TARGET_LIB__ > 0x42010000 +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown library version - please run the configure tests and report the results" +# endif +#endif + +#define BOOST_STDLIB "IBM z/OS XL C/C++ standard library" + +#define BOOST_HAS_MACRO_USE_FACET + +// Unfortunately the IBM z/OS XL C/C++ standard library has a bug when it comes to locales... +// The locale-enabled overloads of functions like std::isdigit or std::tolower in are defined in a nested namespace and pulled into "std" via "using namespace xyz;". +// The classic C versions of those functions are defined in the global namespace, and then pulled into "std" via "using ::functionname;" in . +// This causes problems when including both and , because the compiler will stop looking after it finds a function that was pulled in via "using ::functionname;" +// (which is correct behavior as far as the compiler is concerned). +// I.e. you cannot call a locale-enabled overload of one of those functions if both and were included. +// To deal with this we have to define at least BOOST_DATE_TIME_NO_LOCALE (possibly others?), even though there - theoretically - *is* support for locales. +#define BOOST_DATE_TIME_NO_LOCALE + +#define BOOST_NO_CXX11_HDR_TYPE_TRAITS +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST + +#define BOOST_NO_CXX11_ADDRESSOF +#define BOOST_NO_CXX11_SMART_PTR +#define BOOST_NO_CXX11_ATOMIC_SMART_PTR +#define BOOST_NO_CXX11_NUMERIC_LIMITS +#define BOOST_NO_CXX11_ALLOCATOR +#define BOOST_NO_CXX11_HDR_FUNCTIONAL +#define BOOST_NO_CXX11_HDR_UNORDERED_SET +#define BOOST_NO_CXX11_HDR_UNORDERED_MAP +#define BOOST_NO_CXX11_HDR_TYPEINDEX +#define BOOST_NO_CXX11_HDR_TUPLE +#define BOOST_NO_CXX11_HDR_THREAD +#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR +#define BOOST_NO_CXX11_HDR_REGEX +#define BOOST_NO_CXX11_HDR_RATIO +#define BOOST_NO_CXX11_HDR_RANDOM +#define BOOST_NO_CXX11_HDR_MUTEX +#define BOOST_NO_CXX11_HDR_FUTURE +#define BOOST_NO_CXX11_HDR_FORWARD_LIST +#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +#define BOOST_NO_CXX11_HDR_CODECVT +#define BOOST_NO_CXX11_HDR_CHRONO +#define BOOST_NO_CXX11_HDR_ATOMIC +#define BOOST_NO_CXX11_HDR_ARRAY +#define BOOST_NO_CXX11_STD_ALIGN + +#define BOOST_NO_CXX14_STD_EXCHANGE +#define BOOST_NO_CXX14_HDR_SHARED_MUTEX + +#define BOOST_NO_CXX17_STD_INVOKE +#define BOOST_NO_CXX17_STD_APPLY diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 6df9223f..dda34259 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -676,15 +676,17 @@ namespace std{ using ::type_info; } // Type and data alignment specification // -#if !defined(BOOST_NO_CXX11_ALIGNAS) -# define BOOST_ALIGNMENT(x) alignas(x) -#elif defined(_MSC_VER) -# define BOOST_ALIGNMENT(x) __declspec(align(x)) -#elif defined(__GNUC__) -# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) -#else -# define BOOST_NO_ALIGNMENT -# define BOOST_ALIGNMENT(x) +#if !defined(BOOST_ALIGNMENT) +# if !defined(BOOST_NO_CXX11_ALIGNAS) +# define BOOST_ALIGNMENT(x) alignas(x) +# elif defined(_MSC_VER) +# define BOOST_ALIGNMENT(x) __declspec(align(x)) +# elif defined(__GNUC__) +# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +# else +# define BOOST_NO_ALIGNMENT +# define BOOST_ALIGNMENT(x) +# endif #endif // Lack of non-public defaulted functions is implied by the lack of any defaulted functions diff --git a/test/boost_has_int128.ipp b/test/boost_has_int128.ipp index 0feb6a3e..b7e10a40 100644 --- a/test/boost_has_int128.ipp +++ b/test/boost_has_int128.ipp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2012. +// (C) Copyright Dynatrace 2017. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -10,21 +11,59 @@ // DESCRIPTION: The platform supports __int128. #include - +#include +#include namespace boost_has_int128{ +#ifdef __GNUC__ +__extension__ typedef __int128 my_int128_t; +__extension__ typedef unsigned __int128 my_uint128_t; +#else +typedef __int128 my_int128_t; +typedef unsigned __int128 my_uint128_t; +#endif + +my_uint128_t volatile g_ui128 = 0; +unsigned long volatile g_ul = 0; + int test() { -#ifdef __GNUC__ - __extension__ __int128 lli = 0; - __extension__ unsigned __int128 ulli = 0u; -#else - __int128 lli = 0; - unsigned __int128 ulli = 0u; -#endif - (void)&lli; - (void)&ulli; + my_int128_t si128 = 0; + (void)&si128; + + // Some compilers have seriously broken __int128 implementations, so we need to do a little more than simply check if we can declare variables with __int128... + // #1: check __int128 size + if (sizeof(my_uint128_t) < (128 / CHAR_BIT)) + { + fputs("Type too small.", stderr); + return 1; + } + + // #2: check result of computation with __int128 + my_uint128_t p1 = 1; + my_uint128_t p2 = 1; + unsigned int i = 0; + for (; i < 180; i++) + { + g_ui128 = p1 + p2; + if (g_ui128 < p1) + { + fputs("Unexpected overflow.", stderr); + return 1; + } + p2 = p1; + p1 = g_ui128; + } + + g_ul = static_cast((g_ui128 >> 92) & 0xFFFFFFFFUL); + g_ul -= 1216382273UL; + if (g_ul != 0) + { + fputs("Incorrect computation result.", stderr); + return 1; + } + return 0; } diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp index 9201b160..fa2fe268 100644 --- a/test/boost_no_auto_declarations.ipp +++ b/test/boost_no_auto_declarations.ipp @@ -1,4 +1,5 @@ // Copyright (C) 2009 Andrey Semashev +// Copyright (C) 2017 Dynatrace // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,13 +12,13 @@ namespace boost_no_cxx11_auto_declarations { -void check_f(int&) +void check_f(short&) { } int test() { - auto x = 10; + auto x = static_cast(10); check_f(x); return 0; } diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp index 8fb7d5e4..c55791d2 100644 --- a/test/boost_no_auto_multidecl.ipp +++ b/test/boost_no_auto_multidecl.ipp @@ -1,4 +1,5 @@ // Copyright (C) 2009 Andrey Semashev +// Copyright (C) 2017 Dynatrace // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,13 +12,13 @@ namespace boost_no_cxx11_auto_multideclarations { -void check_f(int&, int*&) +void check_f(short&, short*&) { } int test() { - auto x = 10, *y = &x; + auto x = static_cast(10), *y = &x; check_f(x, y); return 0; } diff --git a/tools/configure.in b/tools/configure.in index 8c69620e..ef729340 100644 --- a/tools/configure.in +++ b/tools/configure.in @@ -166,7 +166,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr [[A-Z]] [[a-z]]` + namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` #echo file = $file #echo basename = $basename @@ -234,7 +234,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr [[A-Z]] [[a-z]]` + namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` # echo $file # echo $basename From 1f57db8ab09bc05fa3563a5d9330fb75d85f99c0 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Wed, 22 Feb 2017 00:41:14 +0100 Subject: [PATCH 02/36] support for IBM z/OS XL C/C++ (configure script & compiler/platform/stdlib headers) --- include/boost/config/compiler/xlcpp_zos.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 4c8d3a26..701745b6 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -100,6 +100,7 @@ #endif #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #if defined(__IBMCPP_VARIADIC_TEMPLATES) # define BOOST_HAS_VARIADIC_TMPL From 3af87f9a3961febba606abf1b75280a58f6cec7d Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Sat, 25 Feb 2017 23:07:30 +0100 Subject: [PATCH 03/36] support for IBM z/OS XL C/C++ (configure script & compiler/platform/stdlib headers) --- include/boost/config/compiler/xlcpp_zos.hpp | 36 --------------------- 1 file changed, 36 deletions(-) diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 701745b6..016a3dbe 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -26,38 +26,6 @@ #include // For __UU, __C99, __TR1, ... -#if !defined(BOOST_XLCPP_ZOS_DO_NOT_GUESS) -# if (defined(__C99_MIXED_STRING_CONCAT) \ - && defined(__C99_MAX_LINE_NUMBER) \ - && defined(__C99_EMPTY_MACRO_ARGUMENTS) \ - && defined(__C99_LLONG) \ - && defined(__IBMCPP_C99_PREPROCESSOR) \ - && defined(__IBMCPP_C99_LONG_LONG) \ - && defined(__IBM_CHAR32_T__) \ - && defined(__IBM_CHAR16_T__) \ - && defined(__IBMCPP_VARIADIC_TEMPLATES) \ - && defined(__IBMCPP_STATIC_ASSERT) \ - && defined(__IBMCPP_SCOPED_ENUM) \ - && defined(__IBMCPP_RVALUE_REFERENCES) \ - && defined(__IBMCPP_RIGHT_ANGLE_BRACKET) \ - && defined(__IBMCPP_REFERENCE_COLLAPSING) \ - && defined(__IBMCPP_INLINE_NAMESPACE) \ - && defined(__IBMCPP_EXTENDED_FRIEND) \ - && defined(__IBMCPP_EXPLICIT_CONVERSION_OPERATORS) \ - && defined(__IBMCPP_DELEGATING_CTORS) \ - && defined(__IBMCPP_DECLTYPE) \ - && defined(__IBMCPP_CONSTEXPR) \ - && defined(__IBMCPP_AUTO_TYPEDEDUCTION) \ - ) -// According to documentation, the "defaulted and deleted functions" feature should be testable via the predefined macro __IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS. -// Unfortunately this doesn't work, the macro is actually never defined (compiler version V2R1). -// Guess: defaulted and deleted functions feature is active if ALL other C++11 features supported by the compiler are active. -# if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS) -# define __IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS 1 -# endif -# endif -#endif - #if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS) # define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS @@ -185,10 +153,6 @@ // ------------------------------------- -#define BOOST_SP_NO_SYNC - -// ------------------------------------- - #if defined(__IBM_ATTRIBUTES) # define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) # define BOOST_NOINLINE __attribute__ ((__noinline__)) From 7a78d997d0c117e6163dddc4771ce8d59659d6ef Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 26 Feb 2017 13:01:11 +0000 Subject: [PATCH 04/36] Fixes for various clang versions: clang-5 didn't like the comparison used for testing nl_type.h, other clang versions look for ::gets even though libstdc++ doesn't define it --- include/boost/config/stdlib/libstdcpp3.hpp | 6 ++++++ test/boost_has_nl_types_h.ipp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 205489a9..14dca142 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -143,6 +143,12 @@ # define BOOST_LIBSTDCXX_VERSION 40300 #endif +#if (BOOST_LIBSTDCXX_VERSION < 50100) +// libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it, +// defining it here is a terrible cludge, but should get things working: +extern "C" char *gets (char *__s); +#endif + // // GCC 4.8 and 9 add working versions of and respectively. // However, we have no test for these as the headers were present but broken diff --git a/test/boost_has_nl_types_h.ipp b/test/boost_has_nl_types_h.ipp index 9126adbf..e23f0a21 100644 --- a/test/boost_has_nl_types_h.ipp +++ b/test/boost_has_nl_types_h.ipp @@ -17,7 +17,7 @@ namespace boost_has_nl_types_h{ int test() { nl_catd cat = catopen("foo", 0); - if(cat >= 0) catclose(cat); + if(cat != (nl_catd)-1) catclose(cat); return 0; } From 6a89b24eed6e45eef95e96a91f9f59ff5e67c0a1 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Sun, 26 Feb 2017 15:23:56 +0100 Subject: [PATCH 05/36] remove dependency on undocumented variables --- configure | 4 ++-- tools/configure.in | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 27f9cfbe..85e2307e 100644 --- a/configure +++ b/configure @@ -2614,7 +2614,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` #echo file = $file #echo basename = $basename @@ -2777,7 +2777,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # echo $file # echo $basename diff --git a/tools/configure.in b/tools/configure.in index ef729340..3e1425ce 100644 --- a/tools/configure.in +++ b/tools/configure.in @@ -166,7 +166,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` #echo file = $file #echo basename = $basename @@ -234,7 +234,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr $as_cr_LETTERS $as_cr_letters` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # echo $file # echo $basename From 934c3721123c7f667b3742c0f8d79710eb5f46f0 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Sun, 26 Feb 2017 15:31:38 +0100 Subject: [PATCH 06/36] don't define BOOST_DATE_TIME_NO_LOCALE in Boost.Config header --- include/boost/config/stdlib/xlcpp_zos.hpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp index 2f89638f..35cca6e9 100644 --- a/include/boost/config/stdlib/xlcpp_zos.hpp +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -23,15 +23,6 @@ #define BOOST_HAS_MACRO_USE_FACET -// Unfortunately the IBM z/OS XL C/C++ standard library has a bug when it comes to locales... -// The locale-enabled overloads of functions like std::isdigit or std::tolower in are defined in a nested namespace and pulled into "std" via "using namespace xyz;". -// The classic C versions of those functions are defined in the global namespace, and then pulled into "std" via "using ::functionname;" in . -// This causes problems when including both and , because the compiler will stop looking after it finds a function that was pulled in via "using ::functionname;" -// (which is correct behavior as far as the compiler is concerned). -// I.e. you cannot call a locale-enabled overload of one of those functions if both and were included. -// To deal with this we have to define at least BOOST_DATE_TIME_NO_LOCALE (possibly others?), even though there - theoretically - *is* support for locales. -#define BOOST_DATE_TIME_NO_LOCALE - #define BOOST_NO_CXX11_HDR_TYPE_TRAITS #define BOOST_NO_CXX11_HDR_INITIALIZER_LIST From c8cc56d6785f68c2ce7f3b2b7295a01a4b5fa383 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Sun, 26 Feb 2017 16:58:08 +0100 Subject: [PATCH 07/36] added "&& defined(__MVS__)" to "IBM z/OS XL C/C++" compiler detection --- include/boost/config/select_compiler_config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index a54cab78..508d5756 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -92,7 +92,7 @@ // MPW MrCpp or SCpp # define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__) // IBM z/OS XL C/C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp_zos.hpp" From 85751bb81d805c7df5d43f0fcb8108f614e99c36 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Sun, 26 Feb 2017 19:38:40 +0100 Subject: [PATCH 08/36] added "&& defined(__MVS__)" to "IBM z/OS XL C/C++" library detection --- include/boost/config/select_stdlib_config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 0baca79a..8db778c8 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -66,7 +66,7 @@ // MSL standard lib: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__) // IBM z/OS XL C/C++ # define BOOST_STDLIB_CONFIG "boost/config/stdlib/xlcpp_zos.hpp" From ed79ada80edb49163bf8f7cc72e8209661497da5 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 26 Feb 2017 18:59:19 +0000 Subject: [PATCH 09/36] Merge branch 'z_OS_support' of https://github.com/pgroke-dt/config into develop # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- configure | 4 +- include/boost/config/compiler/xlcpp_zos.hpp | 165 ++++++++++++++++++ include/boost/config/platform/zos.hpp | 32 ++++ .../boost/config/select_compiler_config.hpp | 8 +- .../boost/config/select_platform_config.hpp | 7 +- include/boost/config/select_stdlib_config.hpp | 5 + include/boost/config/stdlib/xlcpp_zos.hpp | 58 ++++++ include/boost/config/suffix.hpp | 20 ++- test/boost_has_int128.ipp | 59 +++++-- test/boost_no_auto_declarations.ipp | 5 +- test/boost_no_auto_multidecl.ipp | 5 +- tools/configure.in | 4 +- 12 files changed, 343 insertions(+), 29 deletions(-) create mode 100644 include/boost/config/compiler/xlcpp_zos.hpp create mode 100644 include/boost/config/platform/zos.hpp create mode 100644 include/boost/config/stdlib/xlcpp_zos.hpp diff --git a/configure b/configure index 82d3db96..85e2307e 100644 --- a/configure +++ b/configure @@ -2614,7 +2614,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr [A-Z] [a-z]` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` #echo file = $file #echo basename = $basename @@ -2777,7 +2777,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'` title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'` - namespace=`echo $macroname | tr [A-Z] [a-z]` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # echo $file # echo $basename diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp new file mode 100644 index 00000000..016a3dbe --- /dev/null +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -0,0 +1,165 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Compiler setup for IBM z/OS XL C/C++ compiler. + +// Oldest compiler version currently supported is 2.1 (V2R1) +#if !defined(__IBMCPP__) || !defined(__COMPILER_VER__) || __COMPILER_VER__ < 0x42010000 +# error "Compiler not supported or configured - please reconfigure" +#endif + +#if __COMPILER_VER__ > 0x42010000 +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + +#define BOOST_COMPILER "IBM z/OS XL C/C++ version " BOOST_STRINGIZE(__COMPILER_VER__) +#define BOOST_XLCPP_ZOS __COMPILER_VER__ + +// ------------------------------------- + +#include // For __UU, __C99, __TR1, ... + +#if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS) +# define BOOST_NO_CXX11_DELETED_FUNCTIONS +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS +#endif + +// ------------------------------------- + +#if defined(__UU) || defined(__C99) || defined(__TR1) +# define BOOST_HAS_LOG1P +# define BOOST_HAS_EXPM1 +#endif + +#if defined(__C99) || defined(__TR1) +# define BOOST_HAS_STDINT_H +#else +# define BOOST_NO_FENV_H +#endif + +// ------------------------------------- + +#define BOOST_HAS_NRVO + +#if !defined(__RTTI_ALL__) +# define BOOST_NO_RTTI +#endif + +#if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif + +#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL) +# define BOOST_HAS_LONG_LONG +#else +# define BOOST_NO_LONG_LONG +#endif + +#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL) || defined(_LP64) +# define BOOST_HAS_MS_INT64 +#endif + +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR + +#if defined(__IBMCPP_VARIADIC_TEMPLATES) +# define BOOST_HAS_VARIADIC_TMPL +#else +# define BOOST_NO_CXX11_VARIADIC_TEMPLATES +# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + +#if defined(__IBMCPP_STATIC_ASSERT) +# define BOOST_HAS_STATIC_ASSERT +#else +# define BOOST_NO_CXX11_STATIC_ASSERT +#endif + +#if defined(__IBMCPP_RVALUE_REFERENCES) +# define BOOST_HAS_RVALUE_REFS +#else +# define BOOST_NO_CXX11_RVALUE_REFERENCES +#endif + +#if !defined(__IBMCPP_SCOPED_ENUM) +# define BOOST_NO_CXX11_SCOPED_ENUMS +#endif + +#define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS + +#if !defined(__IBMCPP_EXPLICIT_CONVERSION_OPERATORS) +# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#endif + +#if !defined(__IBMCPP_DECLTYPE) +# define BOOST_NO_CXX11_DECLTYPE +#else +# define BOOST_HAS_DECLTYPE +#endif +#define BOOST_NO_CXX11_DECLTYPE_N3276 + +#if !defined(__IBMCPP_INLINE_NAMESPACE) +# define BOOST_NO_CXX11_INLINE_NAMESPACES +#endif + +#if !defined(__IBMCPP_AUTO_TYPEDEDUCTION) +# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CXX11_AUTO_DECLARATIONS +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#endif + +#if !defined(__IBM_CHAR32_T__) +# define BOOST_NO_CXX11_CHAR32_T +#endif +#if !defined(__IBM_CHAR16_T__) +# define BOOST_NO_CXX11_CHAR16_T +#endif + +#if !defined(__IBMCPP_CONSTEXPR) +# define BOOST_NO_CXX11_CONSTEXPR +#endif + +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_RAW_LITERALS +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_LAMBDAS +#define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_THREAD_LOCAL +#define BOOST_NO_CXX11_REF_QUALIFIERS +#define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX14_VARIABLE_TEMPLATES +#define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION +#define BOOST_NO_CXX14_AGGREGATE_NSDMI +#define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES +#define BOOST_NO_CXX14_GENERIC_LAMBDAS +#define BOOST_NO_CXX14_DIGIT_SEPARATORS +#define BOOST_NO_CXX14_DECLTYPE_AUTO +#define BOOST_NO_CXX14_CONSTEXPR +#define BOOST_NO_CXX14_BINARY_LITERALS + +// ------------------------------------- + +#if defined(__IBM_ATTRIBUTES) +# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) +# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +#endif + +extern "builtin" long __builtin_expect(long, long); + +#define BOOST_LIKELY(x) __builtin_expect((x) && true, 1) +#define BOOST_UNLIKELY(x) __builtin_expect((x) && true, 0) diff --git a/include/boost/config/platform/zos.hpp b/include/boost/config/platform/zos.hpp new file mode 100644 index 00000000..fa77999e --- /dev/null +++ b/include/boost/config/platform/zos.hpp @@ -0,0 +1,32 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Platform setup for IBM z/OS. + +#define BOOST_PLATFORM "IBM z/OS" + +#include // For __UU, __C99, __TR1, ... + +#if defined(__UU) +# define BOOST_HAS_GETTIMEOFDAY +#endif + +#if defined(_OPEN_THREADS) || defined(__SUSV3_THR) +# define BOOST_HAS_PTHREADS +# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# define BOOST_HAS_THREADS +#endif + +#if defined(__SUSV3) || defined(__SUSV3_THR) +# define BOOST_HAS_SCHED_YIELD +#endif + +#define BOOST_HAS_SIGACTION +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_DIRENT_H +#define BOOST_HAS_NL_TYPES_H diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 7a757084..508d5756 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -92,8 +92,12 @@ // MPW MrCpp or SCpp # define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp" +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__) +// IBM z/OS XL C/C++ +# define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp_zos.hpp" + #elif defined(__ibmxl__) -// IBM XL C/C++ for Linux (Little Endian) +// IBM XL C/C++ for Linux (Little Endian) # define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp.hpp" #elif defined(__IBMCPP__) @@ -140,6 +144,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index 62fd818b..00d3c436 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -53,8 +53,12 @@ // MacOS # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" +#elif defined(__TOS_MVS__) +// IBM z/OS +# define BOOST_PLATFORM_CONFIG "boost/config/platform/zos.hpp" + #elif defined(__IBMCPP__) || defined(_AIX) -// IBM +// IBM AIX # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" #elif defined(__amigaos__) @@ -122,6 +126,7 @@ # include "boost/config/platform/win32.hpp" # include "boost/config/platform/beos.hpp" # include "boost/config/platform/macos.hpp" +# include "boost/config/platform/zos.hpp" # include "boost/config/platform/aix.hpp" # include "boost/config/platform/amigaos.hpp" # include "boost/config/platform/qnxnto.hpp" diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index e270a881..8db778c8 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -66,6 +66,10 @@ // MSL standard lib: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__) +// IBM z/OS XL C/C++ +# define BOOST_STDLIB_CONFIG "boost/config/stdlib/xlcpp_zos.hpp" + #elif defined(__IBMCPP__) // take the default VACPP std lib # define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp" @@ -98,6 +102,7 @@ # include "boost/config/stdlib/libstdcpp3.hpp" # include "boost/config/stdlib/sgi.hpp" # include "boost/config/stdlib/msl.hpp" +# include "boost/config/stdlib/xlcpp_zos.hpp" # include "boost/config/stdlib/vacpp.hpp" # include "boost/config/stdlib/modena.hpp" # include "boost/config/stdlib/dinkumware.hpp" diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp new file mode 100644 index 00000000..35cca6e9 --- /dev/null +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -0,0 +1,58 @@ +// Copyright (c) 2017 Dynatrace +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +// See http://www.boost.org for most recent version. + +// Standard library setup for IBM z/OS XL C/C++ compiler. + +// Oldest library version currently supported is 2.1 (V2R1) +#if __TARGET_LIB__ < 0x42010000 +# error "Library version not supported or configured - please reconfigure" +#endif + +#if __TARGET_LIB__ > 0x42010000 +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown library version - please run the configure tests and report the results" +# endif +#endif + +#define BOOST_STDLIB "IBM z/OS XL C/C++ standard library" + +#define BOOST_HAS_MACRO_USE_FACET + +#define BOOST_NO_CXX11_HDR_TYPE_TRAITS +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST + +#define BOOST_NO_CXX11_ADDRESSOF +#define BOOST_NO_CXX11_SMART_PTR +#define BOOST_NO_CXX11_ATOMIC_SMART_PTR +#define BOOST_NO_CXX11_NUMERIC_LIMITS +#define BOOST_NO_CXX11_ALLOCATOR +#define BOOST_NO_CXX11_HDR_FUNCTIONAL +#define BOOST_NO_CXX11_HDR_UNORDERED_SET +#define BOOST_NO_CXX11_HDR_UNORDERED_MAP +#define BOOST_NO_CXX11_HDR_TYPEINDEX +#define BOOST_NO_CXX11_HDR_TUPLE +#define BOOST_NO_CXX11_HDR_THREAD +#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR +#define BOOST_NO_CXX11_HDR_REGEX +#define BOOST_NO_CXX11_HDR_RATIO +#define BOOST_NO_CXX11_HDR_RANDOM +#define BOOST_NO_CXX11_HDR_MUTEX +#define BOOST_NO_CXX11_HDR_FUTURE +#define BOOST_NO_CXX11_HDR_FORWARD_LIST +#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +#define BOOST_NO_CXX11_HDR_CODECVT +#define BOOST_NO_CXX11_HDR_CHRONO +#define BOOST_NO_CXX11_HDR_ATOMIC +#define BOOST_NO_CXX11_HDR_ARRAY +#define BOOST_NO_CXX11_STD_ALIGN + +#define BOOST_NO_CXX14_STD_EXCHANGE +#define BOOST_NO_CXX14_HDR_SHARED_MUTEX + +#define BOOST_NO_CXX17_STD_INVOKE +#define BOOST_NO_CXX17_STD_APPLY diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 6df9223f..dda34259 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -676,15 +676,17 @@ namespace std{ using ::type_info; } // Type and data alignment specification // -#if !defined(BOOST_NO_CXX11_ALIGNAS) -# define BOOST_ALIGNMENT(x) alignas(x) -#elif defined(_MSC_VER) -# define BOOST_ALIGNMENT(x) __declspec(align(x)) -#elif defined(__GNUC__) -# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) -#else -# define BOOST_NO_ALIGNMENT -# define BOOST_ALIGNMENT(x) +#if !defined(BOOST_ALIGNMENT) +# if !defined(BOOST_NO_CXX11_ALIGNAS) +# define BOOST_ALIGNMENT(x) alignas(x) +# elif defined(_MSC_VER) +# define BOOST_ALIGNMENT(x) __declspec(align(x)) +# elif defined(__GNUC__) +# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +# else +# define BOOST_NO_ALIGNMENT +# define BOOST_ALIGNMENT(x) +# endif #endif // Lack of non-public defaulted functions is implied by the lack of any defaulted functions diff --git a/test/boost_has_int128.ipp b/test/boost_has_int128.ipp index 0feb6a3e..b7e10a40 100644 --- a/test/boost_has_int128.ipp +++ b/test/boost_has_int128.ipp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2012. +// (C) Copyright Dynatrace 2017. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -10,21 +11,59 @@ // DESCRIPTION: The platform supports __int128. #include - +#include +#include namespace boost_has_int128{ +#ifdef __GNUC__ +__extension__ typedef __int128 my_int128_t; +__extension__ typedef unsigned __int128 my_uint128_t; +#else +typedef __int128 my_int128_t; +typedef unsigned __int128 my_uint128_t; +#endif + +my_uint128_t volatile g_ui128 = 0; +unsigned long volatile g_ul = 0; + int test() { -#ifdef __GNUC__ - __extension__ __int128 lli = 0; - __extension__ unsigned __int128 ulli = 0u; -#else - __int128 lli = 0; - unsigned __int128 ulli = 0u; -#endif - (void)&lli; - (void)&ulli; + my_int128_t si128 = 0; + (void)&si128; + + // Some compilers have seriously broken __int128 implementations, so we need to do a little more than simply check if we can declare variables with __int128... + // #1: check __int128 size + if (sizeof(my_uint128_t) < (128 / CHAR_BIT)) + { + fputs("Type too small.", stderr); + return 1; + } + + // #2: check result of computation with __int128 + my_uint128_t p1 = 1; + my_uint128_t p2 = 1; + unsigned int i = 0; + for (; i < 180; i++) + { + g_ui128 = p1 + p2; + if (g_ui128 < p1) + { + fputs("Unexpected overflow.", stderr); + return 1; + } + p2 = p1; + p1 = g_ui128; + } + + g_ul = static_cast((g_ui128 >> 92) & 0xFFFFFFFFUL); + g_ul -= 1216382273UL; + if (g_ul != 0) + { + fputs("Incorrect computation result.", stderr); + return 1; + } + return 0; } diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp index 9201b160..fa2fe268 100644 --- a/test/boost_no_auto_declarations.ipp +++ b/test/boost_no_auto_declarations.ipp @@ -1,4 +1,5 @@ // Copyright (C) 2009 Andrey Semashev +// Copyright (C) 2017 Dynatrace // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,13 +12,13 @@ namespace boost_no_cxx11_auto_declarations { -void check_f(int&) +void check_f(short&) { } int test() { - auto x = 10; + auto x = static_cast(10); check_f(x); return 0; } diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp index 8fb7d5e4..c55791d2 100644 --- a/test/boost_no_auto_multidecl.ipp +++ b/test/boost_no_auto_multidecl.ipp @@ -1,4 +1,5 @@ // Copyright (C) 2009 Andrey Semashev +// Copyright (C) 2017 Dynatrace // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -11,13 +12,13 @@ namespace boost_no_cxx11_auto_multideclarations { -void check_f(int&, int*&) +void check_f(short&, short*&) { } int test() { - auto x = 10, *y = &x; + auto x = static_cast(10), *y = &x; check_f(x, y); return 0; } diff --git a/tools/configure.in b/tools/configure.in index 8c69620e..3e1425ce 100644 --- a/tools/configure.in +++ b/tools/configure.in @@ -166,7 +166,7 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr [[A-Z]] [[a-z]]` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` #echo file = $file #echo basename = $basename @@ -234,7 +234,7 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'` macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'` title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'` - namespace=`echo $macroname | tr [[A-Z]] [[a-z]]` + namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # echo $file # echo $basename From ba7e1ed2017277f4f655bfb53f79b311eec03e57 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Tue, 28 Feb 2017 10:32:45 +0100 Subject: [PATCH 10/36] don't define BOOST_ALIGNMENT - explicit alignment support is broken (V2R1) --- include/boost/config/compiler/xlcpp_zos.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 016a3dbe..7f6d2ad0 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -156,7 +156,7 @@ #if defined(__IBM_ATTRIBUTES) # define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) # define BOOST_NOINLINE __attribute__ ((__noinline__)) -# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +// No BOOST_ALIGNMENT - explicit alignment support is broken (V2R1). #endif extern "builtin" long __builtin_expect(long, long); From 7f3e0414f02f09ee5f7f8fc57dcc828dff9f9dd0 Mon Sep 17 00:00:00 2001 From: Paul Groke Date: Tue, 28 Feb 2017 12:52:41 +0100 Subject: [PATCH 11/36] add _WORKAROUND_GUARD macros for BOOST_XLCPP_ZOS --- include/boost/detail/workaround.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 7727aaf1..1aaa5aed 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -90,6 +90,11 @@ #else #define BOOST_GCC_WORKAROUND_GUARD 0 #endif +#ifndef BOOST_XLCPP_ZOS +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1 +#else +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 0 +#endif #ifndef __IBMCPP__ #define __IBMCPP___WORKAROUND_GUARD 1 #else From 86d6607582473be7b45666f5be375bb42d279e41 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 13 Mar 2017 18:07:03 +0000 Subject: [PATCH 12/36] Merge branch 'develop' of https://github.com/boostorg/config into develop # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- include/boost/config/compiler/xlcpp_zos.hpp | 2 +- include/boost/detail/workaround.hpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 016a3dbe..7f6d2ad0 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -156,7 +156,7 @@ #if defined(__IBM_ATTRIBUTES) # define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) # define BOOST_NOINLINE __attribute__ ((__noinline__)) -# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +// No BOOST_ALIGNMENT - explicit alignment support is broken (V2R1). #endif extern "builtin" long __builtin_expect(long, long); diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 7727aaf1..1aaa5aed 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -90,6 +90,11 @@ #else #define BOOST_GCC_WORKAROUND_GUARD 0 #endif +#ifndef BOOST_XLCPP_ZOS +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1 +#else +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 0 +#endif #ifndef __IBMCPP__ #define __IBMCPP___WORKAROUND_GUARD 1 #else From d5c2dbae3858e0cc0c1093993c5a0b54e9988a9f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 13 Mar 2017 18:58:28 +0000 Subject: [PATCH 13/36] Fix library name for VC14.1 (Visual Studio 2017) --- include/boost/config/auto_link.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index d4f3eabf..c71e8035 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -166,10 +166,10 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc14: # define BOOST_LIB_TOOLSET "vc140" -# elif defined(BOOST_MSVC) +# elif defined(BOOST_MSVC) - // vc15: -# define BOOST_LIB_TOOLSET "vc150" + // vc14.1: +# define BOOST_LIB_TOOLSET "vc141" # elif defined(__BORLANDC__) From 0006275ddd66858363ff06198502c3680b9f5708 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 13 Mar 2017 18:59:09 +0000 Subject: [PATCH 14/36] Update compiler version names in visualc.hpp --- include/boost/config/compiler/visualc.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 24a88d5c..760e2833 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -190,7 +190,7 @@ # define BOOST_NO_CXX11_CONSTEXPR #endif -// C++14 features supported by VC++ 15 Preview 5 +// C++14 features supported by VC++ 14.1 (Visual Studio 2017) // #if (_MSC_VER < 1910) # define BOOST_NO_CXX14_AGGREGATE_NSDMI @@ -303,8 +303,10 @@ # define BOOST_COMPILER_VERSION 11.0 # elif _MSC_VER < 1900 # define BOOST_COMPILER_VERSION 12.0 -# elif _MSC_VER < 2000 +# elif _MSC_VER < 1910 # define BOOST_COMPILER_VERSION 14.0 +# elif _MSC_VER < 1920 +# define BOOST_COMPILER_VERSION 14.1 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -314,7 +316,7 @@ #endif // -// last known and checked version is 19.10.24629 (VC++ 2017 RC): +// last known and checked version is 19.10.25017 (VC++ 2017): #if (_MSC_VER > 1910) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" From 953114b284dcd7f415b3bbd749d043ba480ddf76 Mon Sep 17 00:00:00 2001 From: Thomas Kent Date: Thu, 16 Mar 2017 18:57:02 -0500 Subject: [PATCH 15/36] VS2017 version used in other places is vc1410 --- include/boost/config/auto_link.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index c71e8035..5e16f008 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -168,8 +168,8 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # elif defined(BOOST_MSVC) - // vc14.1: -# define BOOST_LIB_TOOLSET "vc141" + // vc14.10: +# define BOOST_LIB_TOOLSET "vc1410" # elif defined(__BORLANDC__) From 6611d453985f0967b768e222b0f95c81204f2654 Mon Sep 17 00:00:00 2001 From: Thomas Kent Date: Sun, 19 Mar 2017 08:48:11 -0500 Subject: [PATCH 16/36] Using 141 instead of 1410 --- include/boost/config/auto_link.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 5e16f008..c71e8035 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -168,8 +168,8 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # elif defined(BOOST_MSVC) - // vc14.10: -# define BOOST_LIB_TOOLSET "vc1410" + // vc14.1: +# define BOOST_LIB_TOOLSET "vc141" # elif defined(__BORLANDC__) From 4c3433434fb5cc3037c2aa4d83bb0e5d7b16f8e1 Mon Sep 17 00:00:00 2001 From: Daniela Engert Date: Wed, 5 Apr 2017 19:57:31 +0200 Subject: [PATCH 17/36] vc++ 19.10 has std::apply if enabled by /std:c++latest Signed-off-by: Daniela Engert --- include/boost/config/stdlib/dinkumware.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 3b95dcf3..f53a19f2 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -163,7 +163,9 @@ #endif // C++17 features +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) # define BOOST_NO_CXX17_STD_APPLY +#endif #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) # define BOOST_NO_CXX17_STD_INVOKE #endif From af570a4679f9e624b57f932516877bafd9437663 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Fri, 14 Apr 2017 14:05:20 +0200 Subject: [PATCH 18/36] add defect macro description to documentation --- doc/macro_reference.qbk | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index cb9d5972..b9a2e3ec 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -940,6 +940,7 @@ that are not yet supported by a particular compiler or library. [table [[Macro ][Description ]] +[[`BOOST_NO_CXX17_STD_APPLY`][The compiler does not support `std::apply()`.]] [[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]] ] From 517ee146c3f66fd460594c41d7b3b29060ca9ee8 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Fri, 14 Apr 2017 14:10:10 +0200 Subject: [PATCH 19/36] docu: description of BOOST_NO_CXX14_STD_EXCHANGE --- doc/macro_reference.qbk | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index cb9d5972..0f6554d7 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -910,6 +910,7 @@ Foo foo = { 0 }; [[`BOOST_NO_CXX14_CONSTEXPR`][The compiler does not support relaxed `constexpr`.]] [[`BOOST_NO_CXX14_DECLTYPE_AUTO`][The compiler does not support `decltype(auto)`.]] [[`BOOST_NO_CXX14_DIGIT_SEPARATORS`][The compiler does not support digit separators (e.g. `1'000'000`).]] +[[`BOOST_NO_CXX14_STD_EXCHANGE`][The compiler does not support `std::exchange()`.]] [[`BOOST_NO_CXX14_GENERIC_LAMBDAS`][The compiler does not support generic lambda (e.g. `[](auto v){ }`).]] [[`BOOST_NO_CXX14_HDR_SHARED_MUTEX`][The standard library does not provide header .]] [[`BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES`][The compiler does not support initialized lambda capture (e.g. `[foo = 42]{ }`).]] From 272ab4c69fe1627d1c3c8c231b92d5112c3b6942 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 15 Apr 2017 19:19:46 +0100 Subject: [PATCH 20/36] There are no TR1 functions in C++17. --- include/boost/config/compiler/visualc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 760e2833..f51f0e1d 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -107,7 +107,7 @@ // // TR1 features: // -#if _MSC_VER >= 1700 +#if (_MSC_VER >= 1700) && defined(_HAS_CXX17) && (_HAS_CXX17 > 0) // # define BOOST_HAS_TR1_HASH // don't know if this is true yet. // # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet. # define BOOST_HAS_TR1_UNORDERED_MAP From d88c41e68113ce1ab26c4b33171250acd36ae637 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 08:37:17 +0100 Subject: [PATCH 21/36] Remove unnecessary reference to deprecated std::unary/binary_function in test. This test will only fail for obsolete versions of Metrowerks compilers which are probably no longer supported anyway. --- test/boost_no_ptr_mem_const.ipp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/boost_no_ptr_mem_const.ipp b/test/boost_no_ptr_mem_const.ipp index ef6dda5c..f1069669 100644 --- a/test/boost_no_ptr_mem_const.ipp +++ b/test/boost_no_ptr_mem_const.ipp @@ -16,12 +16,10 @@ // of these in overloaded function templates. // See boost/functional.hpp for example. -#include - namespace boost_no_pointer_to_member_const{ template -class const_mem_fun_t : public std::unary_function +class const_mem_fun_t { public: explicit const_mem_fun_t(S (T::*p)() const) @@ -37,7 +35,7 @@ private: }; template -class const_mem_fun1_t : public std::binary_function +class const_mem_fun1_t { public: explicit const_mem_fun1_t(S (T::*p)(A) const) From d468063662631bc42a34a6c976fdc2a5045c81f9 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 09:38:33 +0100 Subject: [PATCH 22/36] Regenerate docs. --- .../boost_config/boost_macro_reference.html | 30 +++++++++++++++++-- doc/html/index.html | 2 +- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index a88b6f9a..fdffef81 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3639,6 +3639,18 @@ + +

+ BOOST_NO_CXX14_STD_EXCHANGE +

+ + +

+ The compiler does not support std::exchange(). +

+ + +

BOOST_NO_CXX14_GENERIC_LAMBDAS @@ -3778,7 +3790,20 @@

- + + + +

+ BOOST_NO_CXX17_STD_APPLY +

+ + +

+ The compiler does not support std::apply(). +

+ + +

BOOST_NO_CXX17_STD_INVOKE @@ -3789,7 +3814,8 @@ The compiler does not support std::invoke().

- + +
diff --git a/doc/html/index.html b/doc/html/index.html index 30d87ce1..85a8682d 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -990,7 +990,7 @@
- +

Last revised: February 05, 2017 at 19:27:06 GMT

Last revised: April 16, 2017 at 08:38:10 GMT


From 3eff8788b1c647ce3038067982bda7ce9d3d87e0 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 18:22:44 +0100 Subject: [PATCH 23/36] Apply VXWorks patch from https://svn.boost.org/trac/boost/ticket/11653 --- include/boost/config/platform/vxworks.hpp | 33 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index cdda0158..8efa01fb 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -286,10 +286,8 @@ inline ssize_t readlink(const char*, char*, size_t){ return -1; } -// vxWorks claims to implement gettimeofday in sys/time.h -// but nevertheless does not provide it! See -// https://support.windriver.com/olsPortal/faces/maintenance/techtipDetail_noHeader.jspx?docId=16442&contentId=WR_TECHTIP_006256 -// We implement a surrogate version here via clock_gettime: +#if (_WRS_VXWORKS_MAJOR < 7) + inline int gettimeofday(struct timeval *tv, void * /*tzv*/) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); @@ -297,6 +295,8 @@ inline int gettimeofday(struct timeval *tv, void * /*tzv*/) { tv->tv_usec = ts.tv_nsec / 1000; return 0; } +#endif + // vxWorks does provide neither struct tms nor function times()! // We implement an empty dummy-function, simply setting the user @@ -327,6 +327,7 @@ inline clock_t times(struct tms *t){ return ticks; } +extern void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h } // extern "C" // Put the selfmade functions into the std-namespace, just in case @@ -360,10 +361,32 @@ namespace std { #if !defined(BUS_ADRALN) && defined(BUS_ADRALNR) # define BUS_ADRALN BUS_ADRALNR // Correct a supposed typo in vxWorks' #endif -//typedef int locale_t; // locale_t is a POSIX-extension, currently unpresent in vxWorks! +typedef int locale_t; // locale_t is a POSIX-extension, currently not present in vxWorks! // #include boilerplate code: #include // vxWorks lies about XSI conformance, there is no nl_types.h: #undef BOOST_HAS_NL_TYPES_H + +// vxWorks 7 adds C++11 support +// however it is optional, and does not match exactly the support determined +// by examining Dinkum STL version and GCC version (or ICC and DCC) + +#ifndef _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011 +# define BOOST_NO_CXX11_HDR_ARRAY +# define BOOST_NO_CXX11_HDR_TYPEINDEX +# define BOOST_NO_CXX11_HDR_TYPE_TRAITS +# define BOOST_NO_CXX11_HDR_TUPLE +# define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_SMART_PTR +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_HDR_UNORDERED_SET +# define BOOST_NO_CXX11_HDR_TYPE_TRAITS +# define BOOST_NO_CXX11_HDR_UNORDERED_MAP +# define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +#else +# define BOOST_NO_CXX11_NULLPTR +#endif + From 7d09af45559112bc86afc8bf78f7a8c7babdcff7 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 18:29:44 +0100 Subject: [PATCH 24/36] Apply Diab compiler support from https://svn.boost.org/trac/boost/ticket/11655. --- include/boost/config/compiler/diab.hpp | 19 +++++++++++++++++++ .../boost/config/select_compiler_config.hpp | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 include/boost/config/compiler/diab.hpp diff --git a/include/boost/config/compiler/diab.hpp b/include/boost/config/compiler/diab.hpp new file mode 100644 index 00000000..0de72d06 --- /dev/null +++ b/include/boost/config/compiler/diab.hpp @@ -0,0 +1,19 @@ +// (C) Copyright Brian Kuhl 2016. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Check this is a recent EDG based compiler, otherwise we don't support it here: + + +#ifndef __EDG_VERSION__ +# error "Unknown Diab compiler version - please run the configure tests and report the results" +#endif + +#include "boost/config/compiler/common_edg.hpp" + +#define BOOST_HAS_LONG_LONG +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#define BOOST_NO_CXX11_HDR_CODECVT +#define BOOST_COMPILER "Wind River Diab " BOOST_STRINGIZE(__VERSION_NUMBER__) diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 508d5756..97d47c1c 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -48,6 +48,10 @@ // Digital Mars C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp" +#elif defined __DCC__ +// Wind River Diab C++ +# define BOOST_COMPILER_CONFIG "boost/config/compiler/diab.hpp" + # elif defined(__GNUC__) && !defined(__ibmxl__) // GNU C++: # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" From 7e1b05be28a3c8a78ee6440cd5ba8d1a610fea2d Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 18:52:22 +0100 Subject: [PATCH 25/36] Update for Pathscale from https://svn.boost.org/trac/boost/ticket/12193. --- include/boost/config/compiler/pathscale.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 016ad5a4..709f8cf8 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -12,7 +12,12 @@ # define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__ #endif -#if __PATHCC__ >= 4 +#if __PATHCC__ >= 6 +// PathCC is based on clang, and supports the __has_*() builtins used +// to detect features in clang.hpp. Since the clang toolset is much +// better maintained, it is more convenient to reuse its definitions. +# include "boost/config/compiler/clang.hpp" +#elif __PATHCC__ >= 4 # define BOOST_MSVC6_MEMBER_TEMPLATES # define BOOST_HAS_UNISTD_H # define BOOST_HAS_STDINT_H From 3fbf51f31a891a604363bcaec98984d40b38a4eb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 19:12:59 +0100 Subject: [PATCH 26/36] Move private headers into detail directory. See https://svn.boost.org/trac/boost/ticket/12328. --- include/boost/config.hpp | 8 ++++---- include/boost/config/{ => detail}/posix_features.hpp | 0 .../boost/config/{ => detail}/select_compiler_config.hpp | 0 .../boost/config/{ => detail}/select_platform_config.hpp | 4 ++-- .../boost/config/{ => detail}/select_stdlib_config.hpp | 0 include/boost/config/{ => detail}/suffix.hpp | 0 include/boost/config/platform/aix.hpp | 2 +- include/boost/config/platform/beos.hpp | 2 +- include/boost/config/platform/bsd.hpp | 2 +- include/boost/config/platform/cray.hpp | 2 +- include/boost/config/platform/cygwin.hpp | 2 +- include/boost/config/platform/haiku.hpp | 2 +- include/boost/config/platform/hpux.hpp | 2 +- include/boost/config/platform/irix.hpp | 2 +- include/boost/config/platform/linux.hpp | 2 +- include/boost/config/platform/macos.hpp | 2 +- include/boost/config/platform/qnxnto.hpp | 2 +- include/boost/config/platform/solaris.hpp | 2 +- include/boost/config/platform/symbian.hpp | 2 +- include/boost/config/platform/vxworks.hpp | 4 ++-- include/boost/config/stdlib/msl.hpp | 2 +- 21 files changed, 22 insertions(+), 22 deletions(-) rename include/boost/config/{ => detail}/posix_features.hpp (100%) rename include/boost/config/{ => detail}/select_compiler_config.hpp (100%) rename include/boost/config/{ => detail}/select_platform_config.hpp (97%) rename include/boost/config/{ => detail}/select_stdlib_config.hpp (100%) rename include/boost/config/{ => detail}/suffix.hpp (100%) diff --git a/include/boost/config.hpp b/include/boost/config.hpp index d49bb27c..f00a9805 100644 --- a/include/boost/config.hpp +++ b/include/boost/config.hpp @@ -32,7 +32,7 @@ // if we don't have a compiler config set, try and find one: #if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG) -# include +# include #endif // if we have a compiler config, include it now: #ifdef BOOST_COMPILER_CONFIG @@ -41,7 +41,7 @@ // if we don't have a std library config set, try and find one: #if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus) -# include +# include #endif // if we have a std library config, include it now: #ifdef BOOST_STDLIB_CONFIG @@ -50,7 +50,7 @@ // if we don't have a platform config set, try and find one: #if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG) -# include +# include #endif // if we have a platform config, include it now: #ifdef BOOST_PLATFORM_CONFIG @@ -58,7 +58,7 @@ #endif // get config suffix code: -#include +#include #ifdef BOOST_HAS_PRAGMA_ONCE #pragma once diff --git a/include/boost/config/posix_features.hpp b/include/boost/config/detail/posix_features.hpp similarity index 100% rename from include/boost/config/posix_features.hpp rename to include/boost/config/detail/posix_features.hpp diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/detail/select_compiler_config.hpp similarity index 100% rename from include/boost/config/select_compiler_config.hpp rename to include/boost/config/detail/select_compiler_config.hpp diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/detail/select_platform_config.hpp similarity index 97% rename from include/boost/config/select_platform_config.hpp rename to include/boost/config/detail/select_platform_config.hpp index 00d3c436..b36eca57 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/detail/select_platform_config.hpp @@ -101,7 +101,7 @@ # define BOOST_HAS_UNISTD_H # endif -# include +# include # endif @@ -134,7 +134,7 @@ # include "boost/config/platform/symbian.hpp" # include "boost/config/platform/cray.hpp" # include "boost/config/platform/vms.hpp" -# include +# include diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/detail/select_stdlib_config.hpp similarity index 100% rename from include/boost/config/select_stdlib_config.hpp rename to include/boost/config/detail/select_stdlib_config.hpp diff --git a/include/boost/config/suffix.hpp b/include/boost/config/detail/suffix.hpp similarity index 100% rename from include/boost/config/suffix.hpp rename to include/boost/config/detail/suffix.hpp diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp index 894ef42c..a48e2320 100644 --- a/include/boost/config/platform/aix.hpp +++ b/include/boost/config/platform/aix.hpp @@ -26,7 +26,7 @@ //#define BOOST_HAS_PTHREAD_YIELD // boilerplate code: -#include +#include diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp index 48c3d8dc..6158c1c2 100644 --- a/include/boost/config/platform/beos.hpp +++ b/include/boost/config/platform/beos.hpp @@ -20,7 +20,7 @@ #endif // boilerplate code: -#include +#include diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index a0142978..79e74a08 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -77,7 +77,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include diff --git a/include/boost/config/platform/cray.hpp b/include/boost/config/platform/cray.hpp index 5c476e41..103e9c06 100644 --- a/include/boost/config/platform/cray.hpp +++ b/include/boost/config/platform/cray.hpp @@ -12,7 +12,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 53e23f7f..8ecc4a4a 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -43,7 +43,7 @@ #define BOOST_NO_FENV_H // boilerplate code: -#include +#include // // Cygwin lies about XSI conformance, there is no nl_types.h: diff --git a/include/boost/config/platform/haiku.hpp b/include/boost/config/platform/haiku.hpp index 750866c4..04244c56 100644 --- a/include/boost/config/platform/haiku.hpp +++ b/include/boost/config/platform/haiku.hpp @@ -28,4 +28,4 @@ #define BOOST_HAS_GETTIMEOFDAY // boilerplate code: -#include +#include diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp index 19ce68e5..222622e7 100644 --- a/include/boost/config/platform/hpux.hpp +++ b/include/boost/config/platform/hpux.hpp @@ -43,7 +43,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include // the following are always available: #ifndef BOOST_HAS_GETTIMEOFDAY diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp index aeae49c8..0acb6515 100644 --- a/include/boost/config/platform/irix.hpp +++ b/include/boost/config/platform/irix.hpp @@ -25,7 +25,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 8c43c7b6..db54677e 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -71,7 +71,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include #if defined(__USE_GNU) && !defined(__ANDROID__) && !defined(ANDROID) #define BOOST_HAS_PTHREAD_YIELD #endif diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp index 5be4e3b3..ed7dc15f 100644 --- a/include/boost/config/platform/macos.hpp +++ b/include/boost/config/platform/macos.hpp @@ -25,7 +25,7 @@ // to replace the platform-native BSD one. G++ users // should also always be able to do this on MaxOS X. // -# include +# include # ifndef BOOST_HAS_STDINT_H # define BOOST_HAS_STDINT_H # endif diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp index b1377c8d..d0298cb4 100644 --- a/include/boost/config/platform/qnxnto.hpp +++ b/include/boost/config/platform/qnxnto.hpp @@ -10,7 +10,7 @@ #define BOOST_PLATFORM "QNX" #define BOOST_HAS_UNISTD_H -#include +#include // QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h // or log1p and expm1: diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp index 6e4efc9e..51ffe67f 100644 --- a/include/boost/config/platform/solaris.hpp +++ b/include/boost/config/platform/solaris.hpp @@ -14,7 +14,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H -#include +#include // // pthreads don't actually work with gcc unless _PTHREADS is defined: diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp index e02a7782..f814d00b 100644 --- a/include/boost/config/platform/symbian.hpp +++ b/include/boost/config/platform/symbian.hpp @@ -24,7 +24,7 @@ #include #endif// boilerplate code: # define BOOST_HAS_UNISTD_H -# include +# include // S60 SDK defines _POSIX_VERSION as POSIX.1 # ifndef BOOST_HAS_STDINT_H # define BOOST_HAS_STDINT_H diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 8efa01fb..9108b380 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -180,7 +180,7 @@ // Luckily, at the moment there seems to be none! #endif -// These #defines allow posix_features to work, since vxWorks doesn't +// These #defines allow detail/posix_features to work, since vxWorks doesn't // #define them itself for DKMs (for RTPs on the contrary it does): #ifdef _WRS_KERNEL # ifndef _POSIX_TIMERS @@ -364,7 +364,7 @@ namespace std { typedef int locale_t; // locale_t is a POSIX-extension, currently not present in vxWorks! // #include boilerplate code: -#include +#include // vxWorks lies about XSI conformance, there is no nl_types.h: #undef BOOST_HAS_NL_TYPES_H diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 8f21a138..96c1b0d5 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -34,7 +34,7 @@ # define BOOST_HAS_UNISTD_H # endif // boilerplate code: -# include +# include #endif #if defined(_MWMT) || _MSL_THREADSAFE From 8037ff436be1c2c90d03a0bac16b09ef6670a050 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 19:22:19 +0100 Subject: [PATCH 27/36] Use inline functions not macros for workarounds for missing functions. See https://svn.boost.org/trac/boost/ticket/12501. --- include/boost/config/platform/vxworks.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 9108b380..a7f571c4 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -350,11 +350,11 @@ namespace std { // Include signal.h which might contain a typo to be corrected here #include -#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway! +inline int getpagesize() { return sysconf(_SC_PAGESIZE); } // getpagesize is deprecated anyway! #ifndef S_ISSOCK # define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket? #endif -#define lstat(p, b) stat(p, b) // lstat() == stat(), as vxWorks has no symlinks! +inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks! #ifndef FPE_FLTINV # define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy #endif From fc1f6031434a064ba05de7c8e1ada44b2b7d80ac Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 19:31:25 +0100 Subject: [PATCH 28/36] Prevent macro re-definition in cstdint.hpp. See https://svn.boost.org/trac/boost/ticket/12786. --- include/boost/cstdint.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index bf7097ec..29164f9a 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -422,6 +422,20 @@ INT#_C macros if they're not already defined (John Maddock). #if defined(__GNUC__) && (__GNUC__ >= 4) #pragma GCC system_header #endif +// +// Undef the macros as a precaution, since we may get here if has failed +// to define them all, see https://svn.boost.org/trac/boost/ticket/12786 +// +#undef INT8_C +#undef INT16_C +#undef INT32_C +#undef INT64_C +#undef INTMAX_C +#undef UINT8_C +#undef UINT16_C +#undef UINT32_C +#undef UINT64_C +#undef UINTMAX_C #include # define BOOST__STDC_CONSTANT_MACROS_DEFINED From 8acd1c464d33214a4ca3ee4f89b8c4a9b37a598a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 16 Apr 2017 19:41:36 +0100 Subject: [PATCH 29/36] If we have INTPTR_MAX then presumably we have intptr_t. See https://svn.boost.org/trac/boost/ticket/12853. --- include/boost/cstdint.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 29164f9a..e5507a5f 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -374,7 +374,7 @@ namespace boost || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ || defined(__CYGWIN__) \ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun) + || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun) || defined(INTPTR_MAX) namespace boost { using ::intptr_t; From f3cea5a8e4116b0fa18a2794e6ac896051a4bcc0 Mon Sep 17 00:00:00 2001 From: Daniela Engert Date: Sun, 9 Apr 2017 08:59:41 +0200 Subject: [PATCH 30/36] Introduce feature-test macro BOOST_NO_CXX98_RANDOM_SHUFFLE The algorithm std::random_shuffle was marked as deprecated in C++14 and is removed from the upcoming C++17 standard. The name itself is still reserved and library implementations may continue to ship it. In this sense, support for std::random_shuffle must be regarded as purely optional and a feature-test macro is required to test for its presence. Signed-off-by: Daniela Engert --- doc/html/boost_config/boost_macro_reference.html | 15 +++++++++++++-- doc/macro_reference.qbk | 3 ++- include/boost/config/stdlib/dinkumware.hpp | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index fdffef81..9f308c01 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3770,7 +3770,7 @@ that describe C++17 features not supported

- The following macros describe features in the 2016 ISO C++ standard, formerly + The following macros describe features in the 2017 ISO C++ standard, formerly known as C++1z, that are not yet supported by a particular compiler or library.

@@ -3815,7 +3815,18 @@

- + + + +
+

+ BOOST_NO_CXX98_RANDOM_SHUFFLE +

+
+

+ The compiler does no longer support std::random_shuffle(). It was deprecated in C++14 and is removed from C++17. +

+
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index dc87bffb..3ada8111 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -936,13 +936,14 @@ provide compliant C++14 support. [section Macros that describe C++17 features not supported] -The following macros describe features in the 2016 ISO C++ standard, formerly known as C++1z, +The following macros describe features in the 2017 ISO C++ standard, formerly known as C++1z, that are not yet supported by a particular compiler or library. [table [[Macro ][Description ]] [[`BOOST_NO_CXX17_STD_APPLY`][The compiler does not support `std::apply()`.]] [[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]] +[[`BOOST_NO_CXX98_RANDOM_SHUFFLE`][The compiler does no longer support `std::random_shuffle()`. It was deprecated in C++14 and is removed from C++17.]] ] [endsect] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index f53a19f2..85e5321b 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -190,11 +190,12 @@ #endif #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650) -// If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr is not available. +// If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr and std::random_shuffle are not available. // See https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#C++ // and http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx # if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0) # define BOOST_NO_AUTO_PTR +# define BOOST_NO_CXX98_RANDOM_SHUFFLE # endif #endif From 79bd4b8acf4650379011cc7123314b6fed5ac6ee Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 17 Apr 2017 13:19:19 +0100 Subject: [PATCH 31/36] Simplify build-time config checks. These now simply reflect whatever config.hpp reports, and are therefore always in synch with the headers. They are also now compile-time tests only, which means they function with cross compilers. Fixes: https://svn.boost.org/trac/boost/ticket/12805. --- checks/Jamfile.v2 | 409 +++++++++-------- checks/test_case.cpp | 1006 +++++++++++++++++++++++++----------------- test/all/Jamfile.v2 | 2 +- test/config_info.cpp | 5 + test/config_test.cpp | 2 +- tools/generate.cpp | 27 +- 6 files changed, 826 insertions(+), 625 deletions(-) diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 6cd43a21..1f0a3025 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun Feb 5 19:09:22 2017 +# This file was automatically generated on Mon Apr 17 12:45:44 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -11,212 +11,203 @@ import modules ; import path ; -rule run-simple ( requirements * : target-name ) -{ - obj $(target-name)_obj : test_case.cpp : $(requirements) ; - explicit $(target-name)_obj ; - unit-test $(target-name) : $(target-name)_obj : $(requirements) ; - explicit $(target-name) ; -} - -run-simple TEST_BOOST_HAS_TWO_ARG_USE_FACET : two_arg_use_facet ; -run-simple TEST_BOOST_HAS_BETHREADS : bethreads ; -run-simple TEST_BOOST_HAS_CLOCK_GETTIME : clock_gettime ; -run-simple TEST_BOOST_HAS_DIRENT_H : dirent_h ; -run-simple TEST_BOOST_HAS_EXPM1 : expm1 ; -run-simple TEST_BOOST_HAS_FLOAT128 : float128 ; -run-simple TEST_BOOST_HAS_FTIME : ftime ; -run-simple TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME : getsystemtimeasfiletime ; -run-simple TEST_BOOST_HAS_GETTIMEOFDAY : gettimeofday ; -run-simple TEST_BOOST_HAS_HASH : hash ; -run-simple TEST_BOOST_HAS_INT128 : int128 ; -run-simple TEST_BOOST_HAS_LOG1P : log1p ; -run-simple TEST_BOOST_HAS_LONG_LONG : long_long ; -run-simple TEST_BOOST_HAS_MACRO_USE_FACET : macro_use_facet ; -run-simple TEST_BOOST_HAS_MS_INT64 : ms_int64 ; -run-simple TEST_BOOST_HAS_NANOSLEEP : nanosleep ; -run-simple TEST_BOOST_HAS_NL_TYPES_H : nl_types_h ; -run-simple TEST_BOOST_HAS_NRVO : nrvo ; -run-simple TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR : partial_std_allocator ; -run-simple TEST_BOOST_HAS_PTHREAD_DELAY_NP : pthread_delay_np ; -run-simple TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE : pthread_mutexattr_settype ; -run-simple TEST_BOOST_HAS_PTHREAD_YIELD : pthread_yield ; -run-simple TEST_BOOST_HAS_PTHREADS : pthreads ; -run-simple TEST_BOOST_HAS_RVALUE_REFS : rvalue_refs ; -run-simple TEST_BOOST_HAS_SCHED_YIELD : sched_yield ; -run-simple TEST_BOOST_HAS_SGI_TYPE_TRAITS : sgi_type_traits ; -run-simple TEST_BOOST_HAS_SIGACTION : sigaction ; -run-simple TEST_BOOST_HAS_SLIST : slist ; -run-simple TEST_BOOST_HAS_STATIC_ASSERT : static_assert ; -run-simple TEST_BOOST_HAS_STDINT_H : stdint_h ; -run-simple TEST_BOOST_HAS_STLP_USE_FACET : stlp_use_facet ; -run-simple TEST_BOOST_HAS_TR1_ARRAY : tr1_array ; -run-simple TEST_BOOST_HAS_TR1_BIND : tr1_bind ; -run-simple TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS : tr1_complex_overloads ; -run-simple TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG : tr1_complex_inverse_trig ; -run-simple TEST_BOOST_HAS_TR1_FUNCTION : tr1_function ; -run-simple TEST_BOOST_HAS_TR1_HASH : tr1_hash ; -run-simple TEST_BOOST_HAS_TR1_MEM_FN : tr1_mem_fn ; -run-simple TEST_BOOST_HAS_TR1_RANDOM : tr1_random ; -run-simple TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER : tr1_reference_wrapper ; -run-simple TEST_BOOST_HAS_TR1_REGEX : tr1_regex ; -run-simple TEST_BOOST_HAS_TR1_RESULT_OF : tr1_result_of ; -run-simple TEST_BOOST_HAS_TR1_SHARED_PTR : tr1_shared_ptr ; -run-simple TEST_BOOST_HAS_TR1_TUPLE : tr1_tuple ; -run-simple TEST_BOOST_HAS_TR1_TYPE_TRAITS : tr1_type_traits ; -run-simple TEST_BOOST_HAS_TR1_UNORDERED_MAP : tr1_unordered_map ; -run-simple TEST_BOOST_HAS_TR1_UNORDERED_SET : tr1_unordered_set ; -run-simple TEST_BOOST_HAS_TR1_UTILITY : tr1_utility ; -run-simple TEST_BOOST_HAS_UNISTD_H : unistd_h ; -run-simple TEST_BOOST_HAS_VARIADIC_TMPL : variadic_tmpl ; -run-simple TEST_BOOST_MSVC6_MEMBER_TEMPLATES : boost_msvc6_member_templates ; -run-simple TEST_BOOST_MSVC_STD_ITERATOR : boost_msvc_std_iterator ; -run-simple TEST_BOOST_HAS_WINTHREADS : winthreads ; -run-simple TEST_BOOST_NO_ADL_BARRIER : adl_barrier ; -run-simple TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP : argument_dependent_lookup ; -run-simple TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS : array_type_specializations ; -run-simple TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS : cxx11_auto_declarations ; -run-simple TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS : cxx11_auto_multideclarations ; -run-simple TEST_BOOST_NO_AUTO_PTR : auto_ptr ; -run-simple TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG : boost_bcb_partial_specialization_bug ; -run-simple TEST_BOOST_NO_CXX11_CHAR16_T : cxx11_char16_t ; -run-simple TEST_BOOST_NO_CXX11_CHAR32_T : cxx11_char32_t ; -run-simple TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION : complete_value_initialization ; -run-simple TEST_BOOST_NO_CXX11_CONSTEXPR : cxx11_constexpr ; -run-simple TEST_BOOST_NO_CTYPE_FUNCTIONS : ctype_functions ; -run-simple TEST_BOOST_NO_CV_SPECIALIZATIONS : cv_specializations ; -run-simple TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS : cv_void_specializations ; -run-simple TEST_BOOST_NO_CWCHAR : cwchar ; -run-simple TEST_BOOST_NO_CWCTYPE : cwctype ; -run-simple TEST_BOOST_NO_CXX11_ADDRESSOF : cxx11_addressof ; -run-simple TEST_BOOST_NO_CXX11_ALIGNAS : cxx11_alignas ; -run-simple TEST_BOOST_NO_CXX11_ALLOCATOR : cxx11_allocator ; -run-simple TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR : cxx11_atomic_smart_ptr ; -run-simple TEST_BOOST_NO_CXX11_FINAL : cxx11_final ; -run-simple TEST_BOOST_NO_CXX11_HDR_ARRAY : cxx11_hdr_array ; -run-simple TEST_BOOST_NO_CXX11_HDR_ATOMIC : cxx11_hdr_atomic ; -run-simple TEST_BOOST_NO_CXX11_HDR_CHRONO : cxx11_hdr_chrono ; -run-simple TEST_BOOST_NO_CXX11_HDR_CODECVT : cxx11_hdr_codecvt ; -run-simple TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE : cxx11_hdr_condition_variable ; -run-simple TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST : cxx11_hdr_forward_list ; -run-simple TEST_BOOST_NO_CXX11_HDR_FUTURE : cxx11_hdr_future ; -run-simple TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST : cxx11_hdr_initializer_list ; -run-simple TEST_BOOST_NO_CXX11_HDR_MUTEX : cxx11_hdr_mutex ; -run-simple TEST_BOOST_NO_CXX11_HDR_RANDOM : cxx11_hdr_random ; -run-simple TEST_BOOST_NO_CXX11_HDR_RATIO : cxx11_hdr_ratio ; -run-simple TEST_BOOST_NO_CXX11_HDR_REGEX : cxx11_hdr_regex ; -run-simple TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR : cxx11_hdr_system_error ; -run-simple TEST_BOOST_NO_CXX11_HDR_THREAD : cxx11_hdr_thread ; -run-simple TEST_BOOST_NO_CXX11_HDR_TUPLE : cxx11_hdr_tuple ; -run-simple TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS : cxx11_hdr_type_traits ; -run-simple TEST_BOOST_NO_CXX11_HDR_TYPEINDEX : cxx11_hdr_typeindex ; -run-simple TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP : cxx11_hdr_unordered_map ; -run-simple TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET : cxx11_hdr_unordered_set ; -run-simple TEST_BOOST_NO_CXX11_INLINE_NAMESPACES : cxx11_inline_namespaces ; -run-simple TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS : cxx11_non_public_defaulted_functions ; -run-simple TEST_BOOST_NO_CXX11_NUMERIC_LIMITS : cxx11_numeric_limits ; -run-simple TEST_BOOST_NO_CXX11_REF_QUALIFIERS : cxx11_ref_qualifiers ; -run-simple TEST_BOOST_NO_CXX11_SFINAE_EXPR : cxx11_sfinae_expr ; -run-simple TEST_BOOST_NO_CXX11_SMART_PTR : cxx11_smart_ptr ; -run-simple TEST_BOOST_NO_CXX11_STD_ALIGN : cxx11_std_align ; -run-simple TEST_BOOST_NO_CXX11_THREAD_LOCAL : cxx11_thread_local ; -run-simple TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES : cxx11_trailing_result_types ; -run-simple TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS : cxx11_user_defined_literals ; -run-simple TEST_BOOST_NO_CXX14_BINARY_LITERALS : cxx14_binary_literals ; -run-simple TEST_BOOST_NO_CXX14_CONSTEXPR : cxx14_constexpr ; -run-simple TEST_BOOST_NO_CXX14_DECLTYPE_AUTO : cxx14_decltype_auto ; -run-simple TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS : cxx14_digit_separators ; -run-simple TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS : cxx14_generic_lambdas ; -run-simple TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX : cxx14_hdr_shared_mutex ; -run-simple TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES : cxx14_initialized_lambda_captures ; -run-simple TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI : cxx14_aggregate_nsdmi ; -run-simple TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION : cxx14_return_type_deduction ; -run-simple TEST_BOOST_NO_CXX14_STD_EXCHANGE : cxx14_std_exchange ; -run-simple TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES : cxx14_variable_templates ; -run-simple TEST_BOOST_NO_CXX17_STD_APPLY : cxx17_std_apply ; -run-simple TEST_BOOST_NO_CXX17_STD_INVOKE : cxx17_std_invoke ; -run-simple TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL : cxx11_hdr_functional ; -run-simple TEST_BOOST_NO_CXX11_DECLTYPE : cxx11_decltype ; -run-simple TEST_BOOST_NO_CXX11_DECLTYPE_N3276 : cxx11_decltype_n3276 ; -run-simple TEST_BOOST_DEDUCED_TYPENAME : boost_deduced_typename ; -run-simple TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS : cxx11_defaulted_functions ; -run-simple TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS : cxx11_deleted_functions ; -run-simple TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS : dependent_nested_derivations ; -run-simple TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS : dependent_types_in_template_value_parameters ; -run-simple TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE : exception_std_namespace ; -run-simple TEST_BOOST_NO_EXCEPTIONS : exceptions ; -run-simple TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS : explicit_function_template_arguments ; -run-simple TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS : cxx11_explicit_conversion_operators ; -run-simple TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE : cxx11_extern_template ; -run-simple TEST_BOOST_NO_FENV_H : fenv_h ; -run-simple TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS : cxx11_fixed_length_variadic_template_expansion_packs ; -run-simple TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING : function_template_ordering ; -run-simple TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS : cxx11_function_template_default_args ; -run-simple TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS : function_type_specializations ; -run-simple TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS : ms_int64_numeric_limits ; -run-simple TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION : inclass_member_initialization ; -run-simple TEST_BOOST_NO_INTEGRAL_INT64_T : integral_int64_t ; -run-simple TEST_BOOST_NO_IOSFWD : iosfwd ; -run-simple TEST_BOOST_NO_IOSTREAM : iostream ; -run-simple TEST_BOOST_NO_IS_ABSTRACT : is_abstract ; -run-simple TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS : templated_iterator_constructors ; -run-simple TEST_BOOST_NO_CXX11_LAMBDAS : cxx11_lambdas ; -run-simple TEST_BOOST_NO_LIMITS : limits ; -run-simple TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS : limits_compile_time_constants ; -run-simple TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS : long_long_numeric_limits ; -run-simple TEST_BOOST_NO_LONG_LONG : long_long ; -run-simple TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS : member_function_specializations ; -run-simple TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD : member_template_keyword ; -run-simple TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS : pointer_to_member_template_parameters ; -run-simple TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS : member_template_friends ; -run-simple TEST_BOOST_NO_MEMBER_TEMPLATES : member_templates ; -run-simple TEST_BOOST_NO_NESTED_FRIENDSHIP : nested_friendship ; -run-simple TEST_BOOST_NO_CXX11_NOEXCEPT : cxx11_noexcept ; -run-simple TEST_BOOST_NO_CXX11_NULLPTR : cxx11_nullptr ; -run-simple TEST_BOOST_NO_OPERATORS_IN_NAMESPACE : operators_in_namespace ; -run-simple TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS : partial_specialization_implicit_default_args ; -run-simple TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION : template_partial_specialization ; -run-simple TEST_BOOST_NO_PRIVATE_IN_AGGREGATE : private_in_aggregate ; -run-simple TEST_BOOST_NO_POINTER_TO_MEMBER_CONST : pointer_to_member_const ; -run-simple TEST_BOOST_NO_CXX11_RANGE_BASED_FOR : cxx11_range_based_for ; -run-simple TEST_BOOST_NO_CXX11_RAW_LITERALS : cxx11_raw_literals ; -run-simple TEST_BOOST_NO_RESTRICT_REFERENCES : restrict_references ; -run-simple TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION : unreachable_return_detection ; -run-simple TEST_BOOST_NO_RTTI : rtti ; -run-simple TEST_BOOST_NO_CXX11_RVALUE_REFERENCES : cxx11_rvalue_references ; -run-simple TEST_BOOST_NO_CXX11_SCOPED_ENUMS : cxx11_scoped_enums ; -run-simple TEST_BOOST_NO_SFINAE : sfinae ; -run-simple TEST_BOOST_NO_SFINAE_EXPR : sfinae_expr ; -run-simple TEST_BOOST_NO_STRINGSTREAM : stringstream ; -run-simple TEST_BOOST_NO_CXX11_STATIC_ASSERT : cxx11_static_assert ; -run-simple TEST_BOOST_NO_STD_ALLOCATOR : std_allocator ; -run-simple TEST_BOOST_NO_STD_DISTANCE : std_distance ; -run-simple TEST_BOOST_NO_STD_ITERATOR_TRAITS : std_iterator_traits ; -run-simple TEST_BOOST_NO_STD_ITERATOR : std_iterator ; -run-simple TEST_BOOST_NO_STD_LOCALE : std_locale ; -run-simple TEST_BOOST_NO_STD_MESSAGES : std_messages ; -run-simple TEST_BOOST_NO_STD_MIN_MAX : std_min_max ; -run-simple TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN : std_output_iterator_assign ; -run-simple TEST_BOOST_NO_STD_TYPEINFO : std_typeinfo ; -run-simple TEST_BOOST_NO_STD_USE_FACET : std_use_facet ; -run-simple TEST_BOOST_NO_STD_WSTREAMBUF : std_wstreambuf ; -run-simple TEST_BOOST_NO_STD_WSTRING : std_wstring ; -run-simple TEST_BOOST_NO_STDC_NAMESPACE : stdc_namespace ; -run-simple TEST_BOOST_NO_SWPRINTF : swprintf ; -run-simple TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS : cxx11_local_class_template_parameters ; -run-simple TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES : cxx11_template_aliases ; -run-simple TEST_BOOST_NO_TEMPLATED_IOSTREAMS : templated_iostreams ; -run-simple TEST_BOOST_NO_TEMPLATE_TEMPLATES : template_templates ; -run-simple TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP : two_phase_name_lookup ; -run-simple TEST_BOOST_NO_TYPEID : typeid ; -run-simple TEST_BOOST_NO_TYPENAME_WITH_CTOR : typename_with_ctor ; -run-simple TEST_BOOST_NO_CXX11_UNICODE_LITERALS : cxx11_unicode_literals ; -run-simple TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX : cxx11_unified_initialization_syntax ; -run-simple TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL : boost_function_scope_using_declaration_breaks_adl ; -run-simple TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE : using_declaration_overloads_from_typename_base ; -run-simple TEST_BOOST_NO_USING_TEMPLATE : using_template ; -run-simple TEST_BOOST_NO_CXX11_VARIADIC_MACROS : cxx11_variadic_macros ; -run-simple TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES : cxx11_variadic_templates ; -run-simple TEST_BOOST_NO_VOID_RETURNS : void_returns ; -run-simple TEST_BOOST_NO_INTRINSIC_WCHAR_T : intrinsic_wchar_t ; +obj two_arg_use_facet : test_case.cpp : TEST_BOOST_HAS_TWO_ARG_USE_FACET ; +obj bethreads : test_case.cpp : TEST_BOOST_HAS_BETHREADS ; +obj clock_gettime : test_case.cpp : TEST_BOOST_HAS_CLOCK_GETTIME ; +obj dirent_h : test_case.cpp : TEST_BOOST_HAS_DIRENT_H ; +obj expm1 : test_case.cpp : TEST_BOOST_HAS_EXPM1 ; +obj float128 : test_case.cpp : TEST_BOOST_HAS_FLOAT128 ; +obj ftime : test_case.cpp : TEST_BOOST_HAS_FTIME ; +obj getsystemtimeasfiletime : test_case.cpp : TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME ; +obj gettimeofday : test_case.cpp : TEST_BOOST_HAS_GETTIMEOFDAY ; +obj hash : test_case.cpp : TEST_BOOST_HAS_HASH ; +obj int128 : test_case.cpp : TEST_BOOST_HAS_INT128 ; +obj log1p : test_case.cpp : TEST_BOOST_HAS_LOG1P ; +obj long_long : test_case.cpp : TEST_BOOST_HAS_LONG_LONG ; +obj macro_use_facet : test_case.cpp : TEST_BOOST_HAS_MACRO_USE_FACET ; +obj ms_int64 : test_case.cpp : TEST_BOOST_HAS_MS_INT64 ; +obj nanosleep : test_case.cpp : TEST_BOOST_HAS_NANOSLEEP ; +obj nl_types_h : test_case.cpp : TEST_BOOST_HAS_NL_TYPES_H ; +obj nrvo : test_case.cpp : TEST_BOOST_HAS_NRVO ; +obj partial_std_allocator : test_case.cpp : TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR ; +obj pthread_delay_np : test_case.cpp : TEST_BOOST_HAS_PTHREAD_DELAY_NP ; +obj pthread_mutexattr_settype : test_case.cpp : TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE ; +obj pthread_yield : test_case.cpp : TEST_BOOST_HAS_PTHREAD_YIELD ; +obj pthreads : test_case.cpp : TEST_BOOST_HAS_PTHREADS ; +obj rvalue_refs : test_case.cpp : TEST_BOOST_HAS_RVALUE_REFS ; +obj sched_yield : test_case.cpp : TEST_BOOST_HAS_SCHED_YIELD ; +obj sgi_type_traits : test_case.cpp : TEST_BOOST_HAS_SGI_TYPE_TRAITS ; +obj sigaction : test_case.cpp : TEST_BOOST_HAS_SIGACTION ; +obj slist : test_case.cpp : TEST_BOOST_HAS_SLIST ; +obj static_assert : test_case.cpp : TEST_BOOST_HAS_STATIC_ASSERT ; +obj stdint_h : test_case.cpp : TEST_BOOST_HAS_STDINT_H ; +obj stlp_use_facet : test_case.cpp : TEST_BOOST_HAS_STLP_USE_FACET ; +obj tr1_array : test_case.cpp : TEST_BOOST_HAS_TR1_ARRAY ; +obj tr1_bind : test_case.cpp : TEST_BOOST_HAS_TR1_BIND ; +obj tr1_complex_overloads : test_case.cpp : TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS ; +obj tr1_complex_inverse_trig : test_case.cpp : TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG ; +obj tr1_function : test_case.cpp : TEST_BOOST_HAS_TR1_FUNCTION ; +obj tr1_hash : test_case.cpp : TEST_BOOST_HAS_TR1_HASH ; +obj tr1_mem_fn : test_case.cpp : TEST_BOOST_HAS_TR1_MEM_FN ; +obj tr1_random : test_case.cpp : TEST_BOOST_HAS_TR1_RANDOM ; +obj tr1_reference_wrapper : test_case.cpp : TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER ; +obj tr1_regex : test_case.cpp : TEST_BOOST_HAS_TR1_REGEX ; +obj tr1_result_of : test_case.cpp : TEST_BOOST_HAS_TR1_RESULT_OF ; +obj tr1_shared_ptr : test_case.cpp : TEST_BOOST_HAS_TR1_SHARED_PTR ; +obj tr1_tuple : test_case.cpp : TEST_BOOST_HAS_TR1_TUPLE ; +obj tr1_type_traits : test_case.cpp : TEST_BOOST_HAS_TR1_TYPE_TRAITS ; +obj tr1_unordered_map : test_case.cpp : TEST_BOOST_HAS_TR1_UNORDERED_MAP ; +obj tr1_unordered_set : test_case.cpp : TEST_BOOST_HAS_TR1_UNORDERED_SET ; +obj tr1_utility : test_case.cpp : TEST_BOOST_HAS_TR1_UTILITY ; +obj unistd_h : test_case.cpp : TEST_BOOST_HAS_UNISTD_H ; +obj variadic_tmpl : test_case.cpp : TEST_BOOST_HAS_VARIADIC_TMPL ; +obj boost_msvc6_member_templates : test_case.cpp : TEST_BOOST_MSVC6_MEMBER_TEMPLATES ; +obj boost_msvc_std_iterator : test_case.cpp : TEST_BOOST_MSVC_STD_ITERATOR ; +obj winthreads : test_case.cpp : TEST_BOOST_HAS_WINTHREADS ; +obj adl_barrier : test_case.cpp : TEST_BOOST_NO_ADL_BARRIER ; +obj argument_dependent_lookup : test_case.cpp : TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ; +obj array_type_specializations : test_case.cpp : TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS ; +obj cxx11_auto_declarations : test_case.cpp : TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS ; +obj cxx11_auto_multideclarations : test_case.cpp : TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS ; +obj auto_ptr : test_case.cpp : TEST_BOOST_NO_AUTO_PTR ; +obj boost_bcb_partial_specialization_bug : test_case.cpp : TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG ; +obj cxx11_char16_t : test_case.cpp : TEST_BOOST_NO_CXX11_CHAR16_T ; +obj cxx11_char32_t : test_case.cpp : TEST_BOOST_NO_CXX11_CHAR32_T ; +obj complete_value_initialization : test_case.cpp : TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION ; +obj cxx11_constexpr : test_case.cpp : TEST_BOOST_NO_CXX11_CONSTEXPR ; +obj ctype_functions : test_case.cpp : TEST_BOOST_NO_CTYPE_FUNCTIONS ; +obj cv_specializations : test_case.cpp : TEST_BOOST_NO_CV_SPECIALIZATIONS ; +obj cv_void_specializations : test_case.cpp : TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS ; +obj cwchar : test_case.cpp : TEST_BOOST_NO_CWCHAR ; +obj cwctype : test_case.cpp : TEST_BOOST_NO_CWCTYPE ; +obj cxx11_addressof : test_case.cpp : TEST_BOOST_NO_CXX11_ADDRESSOF ; +obj cxx11_alignas : test_case.cpp : TEST_BOOST_NO_CXX11_ALIGNAS ; +obj cxx11_allocator : test_case.cpp : TEST_BOOST_NO_CXX11_ALLOCATOR ; +obj cxx11_atomic_smart_ptr : test_case.cpp : TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR ; +obj cxx11_final : test_case.cpp : TEST_BOOST_NO_CXX11_FINAL ; +obj cxx11_hdr_array : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_ARRAY ; +obj cxx11_hdr_atomic : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_ATOMIC ; +obj cxx11_hdr_chrono : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_CHRONO ; +obj cxx11_hdr_codecvt : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_CODECVT ; +obj cxx11_hdr_condition_variable : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE ; +obj cxx11_hdr_forward_list : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST ; +obj cxx11_hdr_future : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_FUTURE ; +obj cxx11_hdr_initializer_list : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST ; +obj cxx11_hdr_mutex : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_MUTEX ; +obj cxx11_hdr_random : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_RANDOM ; +obj cxx11_hdr_ratio : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_RATIO ; +obj cxx11_hdr_regex : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_REGEX ; +obj cxx11_hdr_system_error : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR ; +obj cxx11_hdr_thread : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_THREAD ; +obj cxx11_hdr_tuple : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_TUPLE ; +obj cxx11_hdr_type_traits : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS ; +obj cxx11_hdr_typeindex : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_TYPEINDEX ; +obj cxx11_hdr_unordered_map : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP ; +obj cxx11_hdr_unordered_set : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET ; +obj cxx11_inline_namespaces : test_case.cpp : TEST_BOOST_NO_CXX11_INLINE_NAMESPACES ; +obj cxx11_non_public_defaulted_functions : test_case.cpp : TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS ; +obj cxx11_numeric_limits : test_case.cpp : TEST_BOOST_NO_CXX11_NUMERIC_LIMITS ; +obj cxx11_ref_qualifiers : test_case.cpp : TEST_BOOST_NO_CXX11_REF_QUALIFIERS ; +obj cxx11_sfinae_expr : test_case.cpp : TEST_BOOST_NO_CXX11_SFINAE_EXPR ; +obj cxx11_smart_ptr : test_case.cpp : TEST_BOOST_NO_CXX11_SMART_PTR ; +obj cxx11_std_align : test_case.cpp : TEST_BOOST_NO_CXX11_STD_ALIGN ; +obj cxx11_thread_local : test_case.cpp : TEST_BOOST_NO_CXX11_THREAD_LOCAL ; +obj cxx11_trailing_result_types : test_case.cpp : TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES ; +obj cxx11_user_defined_literals : test_case.cpp : TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS ; +obj cxx14_binary_literals : test_case.cpp : TEST_BOOST_NO_CXX14_BINARY_LITERALS ; +obj cxx14_constexpr : test_case.cpp : TEST_BOOST_NO_CXX14_CONSTEXPR ; +obj cxx14_decltype_auto : test_case.cpp : TEST_BOOST_NO_CXX14_DECLTYPE_AUTO ; +obj cxx14_digit_separators : test_case.cpp : TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS ; +obj cxx14_generic_lambdas : test_case.cpp : TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS ; +obj cxx14_hdr_shared_mutex : test_case.cpp : TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX ; +obj cxx14_initialized_lambda_captures : test_case.cpp : TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES ; +obj cxx14_aggregate_nsdmi : test_case.cpp : TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI ; +obj cxx14_return_type_deduction : test_case.cpp : TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION ; +obj cxx14_std_exchange : test_case.cpp : TEST_BOOST_NO_CXX14_STD_EXCHANGE ; +obj cxx14_variable_templates : test_case.cpp : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ; +obj cxx17_std_apply : test_case.cpp : TEST_BOOST_NO_CXX17_STD_APPLY ; +obj cxx17_std_invoke : test_case.cpp : TEST_BOOST_NO_CXX17_STD_INVOKE ; +obj cxx11_hdr_functional : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL ; +obj cxx11_decltype : test_case.cpp : TEST_BOOST_NO_CXX11_DECLTYPE ; +obj cxx11_decltype_n3276 : test_case.cpp : TEST_BOOST_NO_CXX11_DECLTYPE_N3276 ; +obj boost_deduced_typename : test_case.cpp : TEST_BOOST_DEDUCED_TYPENAME ; +obj cxx11_defaulted_functions : test_case.cpp : TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS ; +obj cxx11_deleted_functions : test_case.cpp : TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS ; +obj dependent_nested_derivations : test_case.cpp : TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS ; +obj dependent_types_in_template_value_parameters : test_case.cpp : TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS ; +obj exception_std_namespace : test_case.cpp : TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE ; +obj exceptions : test_case.cpp : TEST_BOOST_NO_EXCEPTIONS ; +obj explicit_function_template_arguments : test_case.cpp : TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS ; +obj cxx11_explicit_conversion_operators : test_case.cpp : TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ; +obj cxx11_extern_template : test_case.cpp : TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE ; +obj fenv_h : test_case.cpp : TEST_BOOST_NO_FENV_H ; +obj cxx11_fixed_length_variadic_template_expansion_packs : test_case.cpp : TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS ; +obj function_template_ordering : test_case.cpp : TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING ; +obj cxx11_function_template_default_args : test_case.cpp : TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS ; +obj function_type_specializations : test_case.cpp : TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS ; +obj ms_int64_numeric_limits : test_case.cpp : TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS ; +obj inclass_member_initialization : test_case.cpp : TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION ; +obj integral_int64_t : test_case.cpp : TEST_BOOST_NO_INTEGRAL_INT64_T ; +obj iosfwd : test_case.cpp : TEST_BOOST_NO_IOSFWD ; +obj iostream : test_case.cpp : TEST_BOOST_NO_IOSTREAM ; +obj is_abstract : test_case.cpp : TEST_BOOST_NO_IS_ABSTRACT ; +obj templated_iterator_constructors : test_case.cpp : TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS ; +obj cxx11_lambdas : test_case.cpp : TEST_BOOST_NO_CXX11_LAMBDAS ; +obj limits : test_case.cpp : TEST_BOOST_NO_LIMITS ; +obj limits_compile_time_constants : test_case.cpp : TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS ; +obj long_long_numeric_limits : test_case.cpp : TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS ; +obj member_function_specializations : test_case.cpp : TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS ; +obj member_template_keyword : test_case.cpp : TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD ; +obj pointer_to_member_template_parameters : test_case.cpp : TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS ; +obj member_template_friends : test_case.cpp : TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS ; +obj member_templates : test_case.cpp : TEST_BOOST_NO_MEMBER_TEMPLATES ; +obj nested_friendship : test_case.cpp : TEST_BOOST_NO_NESTED_FRIENDSHIP ; +obj cxx11_noexcept : test_case.cpp : TEST_BOOST_NO_CXX11_NOEXCEPT ; +obj cxx11_nullptr : test_case.cpp : TEST_BOOST_NO_CXX11_NULLPTR ; +obj operators_in_namespace : test_case.cpp : TEST_BOOST_NO_OPERATORS_IN_NAMESPACE ; +obj partial_specialization_implicit_default_args : test_case.cpp : TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS ; +obj template_partial_specialization : test_case.cpp : TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ; +obj private_in_aggregate : test_case.cpp : TEST_BOOST_NO_PRIVATE_IN_AGGREGATE ; +obj pointer_to_member_const : test_case.cpp : TEST_BOOST_NO_POINTER_TO_MEMBER_CONST ; +obj cxx11_range_based_for : test_case.cpp : TEST_BOOST_NO_CXX11_RANGE_BASED_FOR ; +obj cxx11_raw_literals : test_case.cpp : TEST_BOOST_NO_CXX11_RAW_LITERALS ; +obj restrict_references : test_case.cpp : TEST_BOOST_NO_RESTRICT_REFERENCES ; +obj unreachable_return_detection : test_case.cpp : TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION ; +obj rtti : test_case.cpp : TEST_BOOST_NO_RTTI ; +obj cxx11_rvalue_references : test_case.cpp : TEST_BOOST_NO_CXX11_RVALUE_REFERENCES ; +obj cxx11_scoped_enums : test_case.cpp : TEST_BOOST_NO_CXX11_SCOPED_ENUMS ; +obj sfinae : test_case.cpp : TEST_BOOST_NO_SFINAE ; +obj sfinae_expr : test_case.cpp : TEST_BOOST_NO_SFINAE_EXPR ; +obj stringstream : test_case.cpp : TEST_BOOST_NO_STRINGSTREAM ; +obj cxx11_static_assert : test_case.cpp : TEST_BOOST_NO_CXX11_STATIC_ASSERT ; +obj std_allocator : test_case.cpp : TEST_BOOST_NO_STD_ALLOCATOR ; +obj std_distance : test_case.cpp : TEST_BOOST_NO_STD_DISTANCE ; +obj std_iterator_traits : test_case.cpp : TEST_BOOST_NO_STD_ITERATOR_TRAITS ; +obj std_iterator : test_case.cpp : TEST_BOOST_NO_STD_ITERATOR ; +obj std_locale : test_case.cpp : TEST_BOOST_NO_STD_LOCALE ; +obj std_messages : test_case.cpp : TEST_BOOST_NO_STD_MESSAGES ; +obj std_min_max : test_case.cpp : TEST_BOOST_NO_STD_MIN_MAX ; +obj std_output_iterator_assign : test_case.cpp : TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN ; +obj std_typeinfo : test_case.cpp : TEST_BOOST_NO_STD_TYPEINFO ; +obj std_use_facet : test_case.cpp : TEST_BOOST_NO_STD_USE_FACET ; +obj std_wstreambuf : test_case.cpp : TEST_BOOST_NO_STD_WSTREAMBUF ; +obj std_wstring : test_case.cpp : TEST_BOOST_NO_STD_WSTRING ; +obj stdc_namespace : test_case.cpp : TEST_BOOST_NO_STDC_NAMESPACE ; +obj swprintf : test_case.cpp : TEST_BOOST_NO_SWPRINTF ; +obj cxx11_local_class_template_parameters : test_case.cpp : TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS ; +obj cxx11_template_aliases : test_case.cpp : TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES ; +obj templated_iostreams : test_case.cpp : TEST_BOOST_NO_TEMPLATED_IOSTREAMS ; +obj template_templates : test_case.cpp : TEST_BOOST_NO_TEMPLATE_TEMPLATES ; +obj two_phase_name_lookup : test_case.cpp : TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP ; +obj typeid : test_case.cpp : TEST_BOOST_NO_TYPEID ; +obj typename_with_ctor : test_case.cpp : TEST_BOOST_NO_TYPENAME_WITH_CTOR ; +obj cxx11_unicode_literals : test_case.cpp : TEST_BOOST_NO_CXX11_UNICODE_LITERALS ; +obj cxx11_unified_initialization_syntax : test_case.cpp : TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX ; +obj boost_function_scope_using_declaration_breaks_adl : test_case.cpp : TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL ; +obj using_declaration_overloads_from_typename_base : test_case.cpp : TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE ; +obj using_template : test_case.cpp : TEST_BOOST_NO_USING_TEMPLATE ; +obj cxx11_variadic_macros : test_case.cpp : TEST_BOOST_NO_CXX11_VARIADIC_MACROS ; +obj cxx11_variadic_templates : test_case.cpp : TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES ; +obj void_returns : test_case.cpp : TEST_BOOST_NO_VOID_RETURNS ; +obj intrinsic_wchar_t : test_case.cpp : TEST_BOOST_NO_INTRINSIC_WCHAR_T ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 0a9de081..eacaf16e 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Feb 5 19:09:22 2017 +// This file was automatically generated on Mon Apr 17 12:45:44 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -9,809 +9,1011 @@ // Revision $Id$ // +#include + #ifdef TEST_BOOST_HAS_TWO_ARG_USE_FACET -# include "../test/boost_has_2arg_use_facet.ipp" -namespace test = boost_has_two_arg_use_facet; +# ifndef BOOST_HAS_TWO_ARG_USE_FACET +# error "Feature macro BOOST_HAS_TWO_ARG_USE_FACET is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_BETHREADS -# include "../test/boost_has_bethreads.ipp" -namespace test = boost_has_bethreads; +# ifndef BOOST_HAS_BETHREADS +# error "Feature macro BOOST_HAS_BETHREADS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_CLOCK_GETTIME -# include "../test/boost_has_clock_gettime.ipp" -namespace test = boost_has_clock_gettime; +# ifndef BOOST_HAS_CLOCK_GETTIME +# error "Feature macro BOOST_HAS_CLOCK_GETTIME is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_DIRENT_H -# include "../test/boost_has_dirent_h.ipp" -namespace test = boost_has_dirent_h; +# ifndef BOOST_HAS_DIRENT_H +# error "Feature macro BOOST_HAS_DIRENT_H is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_EXPM1 -# include "../test/boost_has_expm1.ipp" -namespace test = boost_has_expm1; +# ifndef BOOST_HAS_EXPM1 +# error "Feature macro BOOST_HAS_EXPM1 is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_FLOAT128 -# include "../test/boost_has_float128.ipp" -namespace test = boost_has_float128; +# ifndef BOOST_HAS_FLOAT128 +# error "Feature macro BOOST_HAS_FLOAT128 is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_FTIME -# include "../test/boost_has_ftime.ipp" -namespace test = boost_has_ftime; +# ifndef BOOST_HAS_FTIME +# error "Feature macro BOOST_HAS_FTIME is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME -# include "../test/boost_has_getsystemtimeasfiletime.ipp" -namespace test = boost_has_getsystemtimeasfiletime; +# ifndef BOOST_HAS_GETSYSTEMTIMEASFILETIME +# error "Feature macro BOOST_HAS_GETSYSTEMTIMEASFILETIME is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_GETTIMEOFDAY -# include "../test/boost_has_gettimeofday.ipp" -namespace test = boost_has_gettimeofday; +# ifndef BOOST_HAS_GETTIMEOFDAY +# error "Feature macro BOOST_HAS_GETTIMEOFDAY is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_HASH -# include "../test/boost_has_hash.ipp" -namespace test = boost_has_hash; +# ifndef BOOST_HAS_HASH +# error "Feature macro BOOST_HAS_HASH is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_INT128 -# include "../test/boost_has_int128.ipp" -namespace test = boost_has_int128; +# ifndef BOOST_HAS_INT128 +# error "Feature macro BOOST_HAS_INT128 is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_LOG1P -# include "../test/boost_has_log1p.ipp" -namespace test = boost_has_log1p; +# ifndef BOOST_HAS_LOG1P +# error "Feature macro BOOST_HAS_LOG1P is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_LONG_LONG -# include "../test/boost_has_long_long.ipp" -namespace test = boost_has_long_long; +# ifndef BOOST_HAS_LONG_LONG +# error "Feature macro BOOST_HAS_LONG_LONG is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_MACRO_USE_FACET -# include "../test/boost_has_macro_use_facet.ipp" -namespace test = boost_has_macro_use_facet; +# ifndef BOOST_HAS_MACRO_USE_FACET +# error "Feature macro BOOST_HAS_MACRO_USE_FACET is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_MS_INT64 -# include "../test/boost_has_ms_int64.ipp" -namespace test = boost_has_ms_int64; +# ifndef BOOST_HAS_MS_INT64 +# error "Feature macro BOOST_HAS_MS_INT64 is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_NANOSLEEP -# include "../test/boost_has_nanosleep.ipp" -namespace test = boost_has_nanosleep; +# ifndef BOOST_HAS_NANOSLEEP +# error "Feature macro BOOST_HAS_NANOSLEEP is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_NL_TYPES_H -# include "../test/boost_has_nl_types_h.ipp" -namespace test = boost_has_nl_types_h; +# ifndef BOOST_HAS_NL_TYPES_H +# error "Feature macro BOOST_HAS_NL_TYPES_H is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_NRVO -# include "../test/boost_has_nrvo.ipp" -namespace test = boost_has_nrvo; +# ifndef BOOST_HAS_NRVO +# error "Feature macro BOOST_HAS_NRVO is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR -# include "../test/boost_has_part_alloc.ipp" -namespace test = boost_has_partial_std_allocator; +# ifndef BOOST_HAS_PARTIAL_STD_ALLOCATOR +# error "Feature macro BOOST_HAS_PARTIAL_STD_ALLOCATOR is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_PTHREAD_DELAY_NP -# include "../test/boost_has_pthread_delay_np.ipp" -namespace test = boost_has_pthread_delay_np; +# ifndef BOOST_HAS_PTHREAD_DELAY_NP +# error "Feature macro BOOST_HAS_PTHREAD_DELAY_NP is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# include "../test/boost_has_pthread_ma_st.ipp" -namespace test = boost_has_pthread_mutexattr_settype; +# ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# error "Feature macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_PTHREAD_YIELD -# include "../test/boost_has_pthread_yield.ipp" -namespace test = boost_has_pthread_yield; +# ifndef BOOST_HAS_PTHREAD_YIELD +# error "Feature macro BOOST_HAS_PTHREAD_YIELD is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_PTHREADS -# include "../test/boost_has_pthreads.ipp" -namespace test = boost_has_pthreads; +# ifndef BOOST_HAS_PTHREADS +# error "Feature macro BOOST_HAS_PTHREADS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_RVALUE_REFS -# include "../test/boost_has_rvalue_refs.ipp" -namespace test = boost_has_rvalue_refs; +# ifndef BOOST_HAS_RVALUE_REFS +# error "Feature macro BOOST_HAS_RVALUE_REFS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_SCHED_YIELD -# include "../test/boost_has_sched_yield.ipp" -namespace test = boost_has_sched_yield; +# ifndef BOOST_HAS_SCHED_YIELD +# error "Feature macro BOOST_HAS_SCHED_YIELD is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_SGI_TYPE_TRAITS -# include "../test/boost_has_sgi_type_traits.ipp" -namespace test = boost_has_sgi_type_traits; +# ifndef BOOST_HAS_SGI_TYPE_TRAITS +# error "Feature macro BOOST_HAS_SGI_TYPE_TRAITS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_SIGACTION -# include "../test/boost_has_sigaction.ipp" -namespace test = boost_has_sigaction; +# ifndef BOOST_HAS_SIGACTION +# error "Feature macro BOOST_HAS_SIGACTION is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_SLIST -# include "../test/boost_has_slist.ipp" -namespace test = boost_has_slist; +# ifndef BOOST_HAS_SLIST +# error "Feature macro BOOST_HAS_SLIST is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_STATIC_ASSERT -# include "../test/boost_has_static_assert.ipp" -namespace test = boost_has_static_assert; +# ifndef BOOST_HAS_STATIC_ASSERT +# error "Feature macro BOOST_HAS_STATIC_ASSERT is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_STDINT_H -# include "../test/boost_has_stdint_h.ipp" -namespace test = boost_has_stdint_h; +# ifndef BOOST_HAS_STDINT_H +# error "Feature macro BOOST_HAS_STDINT_H is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_STLP_USE_FACET -# include "../test/boost_has_stlp_use_facet.ipp" -namespace test = boost_has_stlp_use_facet; +# ifndef BOOST_HAS_STLP_USE_FACET +# error "Feature macro BOOST_HAS_STLP_USE_FACET is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_ARRAY -# include "../test/boost_has_tr1_array.ipp" -namespace test = boost_has_tr1_array; +# ifndef BOOST_HAS_TR1_ARRAY +# error "Feature macro BOOST_HAS_TR1_ARRAY is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_BIND -# include "../test/boost_has_tr1_bind.ipp" -namespace test = boost_has_tr1_bind; +# ifndef BOOST_HAS_TR1_BIND +# error "Feature macro BOOST_HAS_TR1_BIND is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS -# include "../test/boost_has_tr1_complex_over.ipp" -namespace test = boost_has_tr1_complex_overloads; +# ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS +# error "Feature macro BOOST_HAS_TR1_COMPLEX_OVERLOADS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -# include "../test/boost_has_tr1_complex_trig.ipp" -namespace test = boost_has_tr1_complex_inverse_trig; +# ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +# error "Feature macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_FUNCTION -# include "../test/boost_has_tr1_function.ipp" -namespace test = boost_has_tr1_function; +# ifndef BOOST_HAS_TR1_FUNCTION +# error "Feature macro BOOST_HAS_TR1_FUNCTION is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_HASH -# include "../test/boost_has_tr1_hash.ipp" -namespace test = boost_has_tr1_hash; +# ifndef BOOST_HAS_TR1_HASH +# error "Feature macro BOOST_HAS_TR1_HASH is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_MEM_FN -# include "../test/boost_has_tr1_mem_fn.ipp" -namespace test = boost_has_tr1_mem_fn; +# ifndef BOOST_HAS_TR1_MEM_FN +# error "Feature macro BOOST_HAS_TR1_MEM_FN is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_RANDOM -# include "../test/boost_has_tr1_random.ipp" -namespace test = boost_has_tr1_random; +# ifndef BOOST_HAS_TR1_RANDOM +# error "Feature macro BOOST_HAS_TR1_RANDOM is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER -# include "../test/boost_has_tr1_ref_wrap.ipp" -namespace test = boost_has_tr1_reference_wrapper; +# ifndef BOOST_HAS_TR1_REFERENCE_WRAPPER +# error "Feature macro BOOST_HAS_TR1_REFERENCE_WRAPPER is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_REGEX -# include "../test/boost_has_tr1_regex.ipp" -namespace test = boost_has_tr1_regex; +# ifndef BOOST_HAS_TR1_REGEX +# error "Feature macro BOOST_HAS_TR1_REGEX is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_RESULT_OF -# include "../test/boost_has_tr1_result_of.ipp" -namespace test = boost_has_tr1_result_of; +# ifndef BOOST_HAS_TR1_RESULT_OF +# error "Feature macro BOOST_HAS_TR1_RESULT_OF is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_SHARED_PTR -# include "../test/boost_has_tr1_shared_ptr.ipp" -namespace test = boost_has_tr1_shared_ptr; +# ifndef BOOST_HAS_TR1_SHARED_PTR +# error "Feature macro BOOST_HAS_TR1_SHARED_PTR is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_TUPLE -# include "../test/boost_has_tr1_tuple.ipp" -namespace test = boost_has_tr1_tuple; +# ifndef BOOST_HAS_TR1_TUPLE +# error "Feature macro BOOST_HAS_TR1_TUPLE is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_TYPE_TRAITS -# include "../test/boost_has_tr1_type_traits.ipp" -namespace test = boost_has_tr1_type_traits; +# ifndef BOOST_HAS_TR1_TYPE_TRAITS +# error "Feature macro BOOST_HAS_TR1_TYPE_TRAITS is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_UNORDERED_MAP -# include "../test/boost_has_tr1_unordered_map.ipp" -namespace test = boost_has_tr1_unordered_map; +# ifndef BOOST_HAS_TR1_UNORDERED_MAP +# error "Feature macro BOOST_HAS_TR1_UNORDERED_MAP is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_UNORDERED_SET -# include "../test/boost_has_tr1_unordered_set.ipp" -namespace test = boost_has_tr1_unordered_set; +# ifndef BOOST_HAS_TR1_UNORDERED_SET +# error "Feature macro BOOST_HAS_TR1_UNORDERED_SET is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_TR1_UTILITY -# include "../test/boost_has_tr1_utility.ipp" -namespace test = boost_has_tr1_utility; +# ifndef BOOST_HAS_TR1_UTILITY +# error "Feature macro BOOST_HAS_TR1_UTILITY is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_UNISTD_H -# include "../test/boost_has_unistd_h.ipp" -namespace test = boost_has_unistd_h; +# ifndef BOOST_HAS_UNISTD_H +# error "Feature macro BOOST_HAS_UNISTD_H is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_VARIADIC_TMPL -# include "../test/boost_has_variadic_tmpl.ipp" -namespace test = boost_has_variadic_tmpl; +# ifndef BOOST_HAS_VARIADIC_TMPL +# error "Feature macro BOOST_HAS_VARIADIC_TMPL is not defined." +# endif #endif #ifdef TEST_BOOST_MSVC6_MEMBER_TEMPLATES -# include "../test/boost_has_vc6_mem_templ.ipp" -namespace test = boost_msvc6_member_templates; +# ifndef BOOST_MSVC6_MEMBER_TEMPLATES +# error "Feature macro BOOST_MSVC6_MEMBER_TEMPLATES is not defined." +# endif #endif #ifdef TEST_BOOST_MSVC_STD_ITERATOR -# include "../test/boost_has_vc_iterator.ipp" -namespace test = boost_msvc_std_iterator; +# ifndef BOOST_MSVC_STD_ITERATOR +# error "Feature macro BOOST_MSVC_STD_ITERATOR is not defined." +# endif #endif #ifdef TEST_BOOST_HAS_WINTHREADS -# include "../test/boost_has_winthreads.ipp" -namespace test = boost_has_winthreads; +# ifndef BOOST_HAS_WINTHREADS +# error "Feature macro BOOST_HAS_WINTHREADS is not defined." +# endif #endif #ifdef TEST_BOOST_NO_ADL_BARRIER -# include "../test/boost_no_adl_barrier.ipp" -namespace test = boost_no_adl_barrier; +# ifdef BOOST_NO_ADL_BARRIER +# error "Defect macro BOOST_NO_ADL_BARRIER is defined." +# endif #endif #ifdef TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# include "../test/boost_no_arg_dep_lookup.ipp" -namespace test = boost_no_argument_dependent_lookup; +# ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# error "Defect macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP is defined." +# endif #endif #ifdef TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS -# include "../test/boost_no_array_type_spec.ipp" -namespace test = boost_no_array_type_specializations; +# ifdef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +# error "Defect macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS -# include "../test/boost_no_auto_declarations.ipp" -namespace test = boost_no_cxx11_auto_declarations; +# ifdef BOOST_NO_CXX11_AUTO_DECLARATIONS +# error "Defect macro BOOST_NO_CXX11_AUTO_DECLARATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -# include "../test/boost_no_auto_multidecl.ipp" -namespace test = boost_no_cxx11_auto_multideclarations; +# ifdef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# error "Defect macro BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_AUTO_PTR -# include "../test/boost_no_auto_ptr.ipp" -namespace test = boost_no_auto_ptr; +# ifdef BOOST_NO_AUTO_PTR +# error "Defect macro BOOST_NO_AUTO_PTR is defined." +# endif #endif #ifdef TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -# include "../test/boost_no_bcb_partial_spec.ipp" -namespace test = boost_bcb_partial_specialization_bug; +# ifdef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +# error "Defect macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_CHAR16_T -# include "../test/boost_no_char16_t.ipp" -namespace test = boost_no_cxx11_char16_t; +# ifdef BOOST_NO_CXX11_CHAR16_T +# error "Defect macro BOOST_NO_CXX11_CHAR16_T is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_CHAR32_T -# include "../test/boost_no_char32_t.ipp" -namespace test = boost_no_cxx11_char32_t; +# ifdef BOOST_NO_CXX11_CHAR32_T +# error "Defect macro BOOST_NO_CXX11_CHAR32_T is defined." +# endif #endif #ifdef TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION -# include "../test/boost_no_com_value_init.ipp" -namespace test = boost_no_complete_value_initialization; +# ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# error "Defect macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_CONSTEXPR -# include "../test/boost_no_constexpr.ipp" -namespace test = boost_no_cxx11_constexpr; +# ifdef BOOST_NO_CXX11_CONSTEXPR +# error "Defect macro BOOST_NO_CXX11_CONSTEXPR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CTYPE_FUNCTIONS -# include "../test/boost_no_ctype_functions.ipp" -namespace test = boost_no_ctype_functions; +# ifdef BOOST_NO_CTYPE_FUNCTIONS +# error "Defect macro BOOST_NO_CTYPE_FUNCTIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CV_SPECIALIZATIONS -# include "../test/boost_no_cv_spec.ipp" -namespace test = boost_no_cv_specializations; +# ifdef BOOST_NO_CV_SPECIALIZATIONS +# error "Defect macro BOOST_NO_CV_SPECIALIZATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS -# include "../test/boost_no_cv_void_spec.ipp" -namespace test = boost_no_cv_void_specializations; +# ifdef BOOST_NO_CV_VOID_SPECIALIZATIONS +# error "Defect macro BOOST_NO_CV_VOID_SPECIALIZATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CWCHAR -# include "../test/boost_no_cwchar.ipp" -namespace test = boost_no_cwchar; +# ifdef BOOST_NO_CWCHAR +# error "Defect macro BOOST_NO_CWCHAR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CWCTYPE -# include "../test/boost_no_cwctype.ipp" -namespace test = boost_no_cwctype; +# ifdef BOOST_NO_CWCTYPE +# error "Defect macro BOOST_NO_CWCTYPE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_ADDRESSOF -# include "../test/boost_no_cxx11_addressof.ipp" -namespace test = boost_no_cxx11_addressof; +# ifdef BOOST_NO_CXX11_ADDRESSOF +# error "Defect macro BOOST_NO_CXX11_ADDRESSOF is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_ALIGNAS -# include "../test/boost_no_cxx11_alignas.ipp" -namespace test = boost_no_cxx11_alignas; +# ifdef BOOST_NO_CXX11_ALIGNAS +# error "Defect macro BOOST_NO_CXX11_ALIGNAS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_ALLOCATOR -# include "../test/boost_no_cxx11_allocator.ipp" -namespace test = boost_no_cxx11_allocator; +# ifdef BOOST_NO_CXX11_ALLOCATOR +# error "Defect macro BOOST_NO_CXX11_ALLOCATOR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR -# include "../test/boost_no_cxx11_atomic_sp.ipp" -namespace test = boost_no_cxx11_atomic_smart_ptr; +# ifdef BOOST_NO_CXX11_ATOMIC_SMART_PTR +# error "Defect macro BOOST_NO_CXX11_ATOMIC_SMART_PTR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_FINAL -# include "../test/boost_no_cxx11_final.ipp" -namespace test = boost_no_cxx11_final; +# ifdef BOOST_NO_CXX11_FINAL +# error "Defect macro BOOST_NO_CXX11_FINAL is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_ARRAY -# include "../test/boost_no_cxx11_hdr_array.ipp" -namespace test = boost_no_cxx11_hdr_array; +# ifdef BOOST_NO_CXX11_HDR_ARRAY +# error "Defect macro BOOST_NO_CXX11_HDR_ARRAY is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_ATOMIC -# include "../test/boost_no_cxx11_hdr_atomic.ipp" -namespace test = boost_no_cxx11_hdr_atomic; +# ifdef BOOST_NO_CXX11_HDR_ATOMIC +# error "Defect macro BOOST_NO_CXX11_HDR_ATOMIC is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_CHRONO -# include "../test/boost_no_cxx11_hdr_chrono.ipp" -namespace test = boost_no_cxx11_hdr_chrono; +# ifdef BOOST_NO_CXX11_HDR_CHRONO +# error "Defect macro BOOST_NO_CXX11_HDR_CHRONO is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_CODECVT -# include "../test/boost_no_cxx11_hdr_codecvt.ipp" -namespace test = boost_no_cxx11_hdr_codecvt; +# ifdef BOOST_NO_CXX11_HDR_CODECVT +# error "Defect macro BOOST_NO_CXX11_HDR_CODECVT is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE -# include "../test/boost_no_cxx11_hdr_condition_variable.ipp" -namespace test = boost_no_cxx11_hdr_condition_variable; +# ifdef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# error "Defect macro BOOST_NO_CXX11_HDR_CONDITION_VARIABLE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST -# include "../test/boost_no_cxx11_hdr_forward_list.ipp" -namespace test = boost_no_cxx11_hdr_forward_list; +# ifdef BOOST_NO_CXX11_HDR_FORWARD_LIST +# error "Defect macro BOOST_NO_CXX11_HDR_FORWARD_LIST is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_FUTURE -# include "../test/boost_no_cxx11_hdr_future.ipp" -namespace test = boost_no_cxx11_hdr_future; +# ifdef BOOST_NO_CXX11_HDR_FUTURE +# error "Defect macro BOOST_NO_CXX11_HDR_FUTURE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST -# include "../test/boost_no_cxx11_hdr_initializer_list.ipp" -namespace test = boost_no_cxx11_hdr_initializer_list; +# ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST +# error "Defect macro BOOST_NO_CXX11_HDR_INITIALIZER_LIST is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_MUTEX -# include "../test/boost_no_cxx11_hdr_mutex.ipp" -namespace test = boost_no_cxx11_hdr_mutex; +# ifdef BOOST_NO_CXX11_HDR_MUTEX +# error "Defect macro BOOST_NO_CXX11_HDR_MUTEX is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_RANDOM -# include "../test/boost_no_cxx11_hdr_random.ipp" -namespace test = boost_no_cxx11_hdr_random; +# ifdef BOOST_NO_CXX11_HDR_RANDOM +# error "Defect macro BOOST_NO_CXX11_HDR_RANDOM is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_RATIO -# include "../test/boost_no_cxx11_hdr_ratio.ipp" -namespace test = boost_no_cxx11_hdr_ratio; +# ifdef BOOST_NO_CXX11_HDR_RATIO +# error "Defect macro BOOST_NO_CXX11_HDR_RATIO is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_REGEX -# include "../test/boost_no_cxx11_hdr_regex.ipp" -namespace test = boost_no_cxx11_hdr_regex; +# ifdef BOOST_NO_CXX11_HDR_REGEX +# error "Defect macro BOOST_NO_CXX11_HDR_REGEX is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR -# include "../test/boost_no_cxx11_hdr_system_error.ipp" -namespace test = boost_no_cxx11_hdr_system_error; +# ifdef BOOST_NO_CXX11_HDR_SYSTEM_ERROR +# error "Defect macro BOOST_NO_CXX11_HDR_SYSTEM_ERROR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_THREAD -# include "../test/boost_no_cxx11_hdr_thread.ipp" -namespace test = boost_no_cxx11_hdr_thread; +# ifdef BOOST_NO_CXX11_HDR_THREAD +# error "Defect macro BOOST_NO_CXX11_HDR_THREAD is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_TUPLE -# include "../test/boost_no_cxx11_hdr_tuple.ipp" -namespace test = boost_no_cxx11_hdr_tuple; +# ifdef BOOST_NO_CXX11_HDR_TUPLE +# error "Defect macro BOOST_NO_CXX11_HDR_TUPLE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS -# include "../test/boost_no_cxx11_hdr_type_traits.ipp" -namespace test = boost_no_cxx11_hdr_type_traits; +# ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS +# error "Defect macro BOOST_NO_CXX11_HDR_TYPE_TRAITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_TYPEINDEX -# include "../test/boost_no_cxx11_hdr_typeindex.ipp" -namespace test = boost_no_cxx11_hdr_typeindex; +# ifdef BOOST_NO_CXX11_HDR_TYPEINDEX +# error "Defect macro BOOST_NO_CXX11_HDR_TYPEINDEX is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP -# include "../test/boost_no_cxx11_hdr_unordered_map.ipp" -namespace test = boost_no_cxx11_hdr_unordered_map; +# ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP +# error "Defect macro BOOST_NO_CXX11_HDR_UNORDERED_MAP is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET -# include "../test/boost_no_cxx11_hdr_unordered_set.ipp" -namespace test = boost_no_cxx11_hdr_unordered_set; +# ifdef BOOST_NO_CXX11_HDR_UNORDERED_SET +# error "Defect macro BOOST_NO_CXX11_HDR_UNORDERED_SET is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_INLINE_NAMESPACES -# include "../test/boost_no_cxx11_inline_namespaces.ipp" -namespace test = boost_no_cxx11_inline_namespaces; +# ifdef BOOST_NO_CXX11_INLINE_NAMESPACES +# error "Defect macro BOOST_NO_CXX11_INLINE_NAMESPACES is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS -# include "../test/boost_no_cxx11_non_pub_def_fun.ipp" -namespace test = boost_no_cxx11_non_public_defaulted_functions; +# ifdef BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS +# error "Defect macro BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_NUMERIC_LIMITS -# include "../test/boost_no_cxx11_numeric_limits.ipp" -namespace test = boost_no_cxx11_numeric_limits; +# ifdef BOOST_NO_CXX11_NUMERIC_LIMITS +# error "Defect macro BOOST_NO_CXX11_NUMERIC_LIMITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_REF_QUALIFIERS -# include "../test/boost_no_cxx11_ref_qualifiers.ipp" -namespace test = boost_no_cxx11_ref_qualifiers; +# ifdef BOOST_NO_CXX11_REF_QUALIFIERS +# error "Defect macro BOOST_NO_CXX11_REF_QUALIFIERS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_SFINAE_EXPR -# include "../test/boost_no_cxx11_sfinae_expr.ipp" -namespace test = boost_no_cxx11_sfinae_expr; +# ifdef BOOST_NO_CXX11_SFINAE_EXPR +# error "Defect macro BOOST_NO_CXX11_SFINAE_EXPR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_SMART_PTR -# include "../test/boost_no_cxx11_smart_ptr.ipp" -namespace test = boost_no_cxx11_smart_ptr; +# ifdef BOOST_NO_CXX11_SMART_PTR +# error "Defect macro BOOST_NO_CXX11_SMART_PTR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_STD_ALIGN -# include "../test/boost_no_cxx11_std_align.ipp" -namespace test = boost_no_cxx11_std_align; +# ifdef BOOST_NO_CXX11_STD_ALIGN +# error "Defect macro BOOST_NO_CXX11_STD_ALIGN is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_THREAD_LOCAL -# include "../test/boost_no_cxx11_thread_local.ipp" -namespace test = boost_no_cxx11_thread_local; +# ifdef BOOST_NO_CXX11_THREAD_LOCAL +# error "Defect macro BOOST_NO_CXX11_THREAD_LOCAL is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES -# include "../test/boost_no_cxx11_trailing_result_types.ipp" -namespace test = boost_no_cxx11_trailing_result_types; +# ifdef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# error "Defect macro BOOST_NO_CXX11_TRAILING_RESULT_TYPES is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS -# include "../test/boost_no_cxx11_user_lit.ipp" -namespace test = boost_no_cxx11_user_defined_literals; +# ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS +# error "Defect macro BOOST_NO_CXX11_USER_DEFINED_LITERALS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_BINARY_LITERALS -# include "../test/boost_no_cxx14_binary_literals.ipp" -namespace test = boost_no_cxx14_binary_literals; +# ifdef BOOST_NO_CXX14_BINARY_LITERALS +# error "Defect macro BOOST_NO_CXX14_BINARY_LITERALS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_CONSTEXPR -# include "../test/boost_no_cxx14_constexpr.ipp" -namespace test = boost_no_cxx14_constexpr; +# ifdef BOOST_NO_CXX14_CONSTEXPR +# error "Defect macro BOOST_NO_CXX14_CONSTEXPR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_DECLTYPE_AUTO -# include "../test/boost_no_cxx14_decltype_auto.ipp" -namespace test = boost_no_cxx14_decltype_auto; +# ifdef BOOST_NO_CXX14_DECLTYPE_AUTO +# error "Defect macro BOOST_NO_CXX14_DECLTYPE_AUTO is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS -# include "../test/boost_no_cxx14_digit_separator.ipp" -namespace test = boost_no_cxx14_digit_separators; +# ifdef BOOST_NO_CXX14_DIGIT_SEPARATORS +# error "Defect macro BOOST_NO_CXX14_DIGIT_SEPARATORS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS -# include "../test/boost_no_cxx14_generic_lambda.ipp" -namespace test = boost_no_cxx14_generic_lambdas; +# ifdef BOOST_NO_CXX14_GENERIC_LAMBDAS +# error "Defect macro BOOST_NO_CXX14_GENERIC_LAMBDAS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX -# include "../test/boost_no_cxx14_hdr_shared_mutex.ipp" -namespace test = boost_no_cxx14_hdr_shared_mutex; +# ifdef BOOST_NO_CXX14_HDR_SHARED_MUTEX +# error "Defect macro BOOST_NO_CXX14_HDR_SHARED_MUTEX is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES -# include "../test/boost_no_cxx14_lambda_capture.ipp" -namespace test = boost_no_cxx14_initialized_lambda_captures; +# ifdef BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES +# error "Defect macro BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI -# include "../test/boost_no_cxx14_member_init.ipp" -namespace test = boost_no_cxx14_aggregate_nsdmi; +# ifdef BOOST_NO_CXX14_AGGREGATE_NSDMI +# error "Defect macro BOOST_NO_CXX14_AGGREGATE_NSDMI is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION -# include "../test/boost_no_cxx14_return_type_ded.ipp" -namespace test = boost_no_cxx14_return_type_deduction; +# ifdef BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION +# error "Defect macro BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_STD_EXCHANGE -# include "../test/boost_no_cxx14_std_exchange.ipp" -namespace test = boost_no_cxx14_std_exchange; +# ifdef BOOST_NO_CXX14_STD_EXCHANGE +# error "Defect macro BOOST_NO_CXX14_STD_EXCHANGE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES -# include "../test/boost_no_cxx14_var_templ.ipp" -namespace test = boost_no_cxx14_variable_templates; +# ifdef BOOST_NO_CXX14_VARIABLE_TEMPLATES +# error "Defect macro BOOST_NO_CXX14_VARIABLE_TEMPLATES is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX17_STD_APPLY -# include "../test/boost_no_cxx17_std_apply.ipp" -namespace test = boost_no_cxx17_std_apply; +# ifdef BOOST_NO_CXX17_STD_APPLY +# error "Defect macro BOOST_NO_CXX17_STD_APPLY is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX17_STD_INVOKE -# include "../test/boost_no_cxx17_std_invoke.ipp" -namespace test = boost_no_cxx17_std_invoke; +# ifdef BOOST_NO_CXX17_STD_INVOKE +# error "Defect macro BOOST_NO_CXX17_STD_INVOKE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL -# include "../test/boost_no_cxx_hdr_functional.ipp" -namespace test = boost_no_cxx11_hdr_functional; +# ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL +# error "Defect macro BOOST_NO_CXX11_HDR_FUNCTIONAL is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_DECLTYPE -# include "../test/boost_no_decltype.ipp" -namespace test = boost_no_cxx11_decltype; +# ifdef BOOST_NO_CXX11_DECLTYPE +# error "Defect macro BOOST_NO_CXX11_DECLTYPE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_DECLTYPE_N3276 -# include "../test/boost_no_decltype_n3276.ipp" -namespace test = boost_no_cxx11_decltype_n3276; +# ifdef BOOST_NO_CXX11_DECLTYPE_N3276 +# error "Defect macro BOOST_NO_CXX11_DECLTYPE_N3276 is defined." +# endif #endif #ifdef TEST_BOOST_DEDUCED_TYPENAME -# include "../test/boost_no_ded_typename.ipp" -namespace test = boost_deduced_typename; +# ifdef BOOST_DEDUCED_TYPENAME +# error "Defect macro BOOST_DEDUCED_TYPENAME is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -# include "../test/boost_no_defaulted_functions.ipp" -namespace test = boost_no_cxx11_defaulted_functions; +# ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# error "Defect macro BOOST_NO_CXX11_DEFAULTED_FUNCTIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS -# include "../test/boost_no_deleted_functions.ipp" -namespace test = boost_no_cxx11_deleted_functions; +# ifdef BOOST_NO_CXX11_DELETED_FUNCTIONS +# error "Defect macro BOOST_NO_CXX11_DELETED_FUNCTIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# include "../test/boost_no_dep_nested_class.ipp" -namespace test = boost_no_dependent_nested_derivations; +# ifdef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# error "Defect macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# include "../test/boost_no_dep_val_param.ipp" -namespace test = boost_no_dependent_types_in_template_value_parameters; +# ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# error "Defect macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS is defined." +# endif #endif #ifdef TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE -# include "../test/boost_no_excep_std.ipp" -namespace test = boost_no_exception_std_namespace; +# ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE +# error "Defect macro BOOST_NO_EXCEPTION_STD_NAMESPACE is defined." +# endif #endif #ifdef TEST_BOOST_NO_EXCEPTIONS -# include "../test/boost_no_exceptions.ipp" -namespace test = boost_no_exceptions; +# ifdef BOOST_NO_EXCEPTIONS +# error "Defect macro BOOST_NO_EXCEPTIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# include "../test/boost_no_exp_func_tem_arg.ipp" -namespace test = boost_no_explicit_function_template_arguments; +# ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +# error "Defect macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS -# include "../test/boost_no_explicit_cvt_ops.ipp" -namespace test = boost_no_cxx11_explicit_conversion_operators; +# ifdef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# error "Defect macro BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE -# include "../test/boost_no_extern_template.ipp" -namespace test = boost_no_cxx11_extern_template; +# ifdef BOOST_NO_CXX11_EXTERN_TEMPLATE +# error "Defect macro BOOST_NO_CXX11_EXTERN_TEMPLATE is defined." +# endif #endif #ifdef TEST_BOOST_NO_FENV_H -# include "../test/boost_no_fenv_h.ipp" -namespace test = boost_no_fenv_h; +# ifdef BOOST_NO_FENV_H +# error "Defect macro BOOST_NO_FENV_H is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS -# include "../test/boost_no_fixed_len_variadic_templates.ipp" -namespace test = boost_no_cxx11_fixed_length_variadic_template_expansion_packs; +# ifdef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +# error "Defect macro BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS is defined." +# endif #endif #ifdef TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# include "../test/boost_no_func_tmp_order.ipp" -namespace test = boost_no_function_template_ordering; +# ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING +# error "Defect macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS -# include "../test/boost_no_function_template_default_args.ipp" -namespace test = boost_no_cxx11_function_template_default_args; +# ifdef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +# error "Defect macro BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS is defined." +# endif #endif #ifdef TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS -# include "../test/boost_no_function_type_spec.ipp" -namespace test = boost_no_function_type_specializations; +# ifdef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +# error "Defect macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS -# include "../test/boost_no_i64_limits.ipp" -namespace test = boost_no_ms_int64_numeric_limits; +# ifdef BOOST_NO_MS_INT64_NUMERIC_LIMITS +# error "Defect macro BOOST_NO_MS_INT64_NUMERIC_LIMITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# include "../test/boost_no_inline_memb_init.ipp" -namespace test = boost_no_inclass_member_initialization; +# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +# error "Defect macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION is defined." +# endif #endif #ifdef TEST_BOOST_NO_INTEGRAL_INT64_T -# include "../test/boost_no_integral_int64_t.ipp" -namespace test = boost_no_integral_int64_t; +# ifdef BOOST_NO_INTEGRAL_INT64_T +# error "Defect macro BOOST_NO_INTEGRAL_INT64_T is defined." +# endif #endif #ifdef TEST_BOOST_NO_IOSFWD -# include "../test/boost_no_iosfwd.ipp" -namespace test = boost_no_iosfwd; +# ifdef BOOST_NO_IOSFWD +# error "Defect macro BOOST_NO_IOSFWD is defined." +# endif #endif #ifdef TEST_BOOST_NO_IOSTREAM -# include "../test/boost_no_iostream.ipp" -namespace test = boost_no_iostream; +# ifdef BOOST_NO_IOSTREAM +# error "Defect macro BOOST_NO_IOSTREAM is defined." +# endif #endif #ifdef TEST_BOOST_NO_IS_ABSTRACT -# include "../test/boost_no_is_abstract.ipp" -namespace test = boost_no_is_abstract; +# ifdef BOOST_NO_IS_ABSTRACT +# error "Defect macro BOOST_NO_IS_ABSTRACT is defined." +# endif #endif #ifdef TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# include "../test/boost_no_iter_construct.ipp" -namespace test = boost_no_templated_iterator_constructors; +# ifdef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# error "Defect macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_LAMBDAS -# include "../test/boost_no_lambdas.ipp" -namespace test = boost_no_cxx11_lambdas; +# ifdef BOOST_NO_CXX11_LAMBDAS +# error "Defect macro BOOST_NO_CXX11_LAMBDAS is defined." +# endif #endif #ifdef TEST_BOOST_NO_LIMITS -# include "../test/boost_no_limits.ipp" -namespace test = boost_no_limits; +# ifdef BOOST_NO_LIMITS +# error "Defect macro BOOST_NO_LIMITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# include "../test/boost_no_limits_const_exp.ipp" -namespace test = boost_no_limits_compile_time_constants; +# ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# error "Defect macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS is defined." +# endif #endif #ifdef TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS -# include "../test/boost_no_ll_limits.ipp" -namespace test = boost_no_long_long_numeric_limits; +# ifdef BOOST_NO_LONG_LONG_NUMERIC_LIMITS +# error "Defect macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_LONG_LONG -# include "../test/boost_no_long_long.ipp" -namespace test = boost_no_long_long; +# ifdef BOOST_NO_LONG_LONG +# error "Defect macro BOOST_NO_LONG_LONG is defined." +# endif #endif #ifdef TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -# include "../test/boost_no_mem_func_spec.ipp" -namespace test = boost_no_member_function_specializations; +# ifdef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +# error "Defect macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS is defined." +# endif #endif #ifdef TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD -# include "../test/boost_no_mem_tem_keyword.ipp" -namespace test = boost_no_member_template_keyword; +# ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +# error "Defect macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD is defined." +# endif #endif #ifdef TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -# include "../test/boost_no_mem_tem_pnts.ipp" -namespace test = boost_no_pointer_to_member_template_parameters; +# ifdef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +# error "Defect macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS is defined." +# endif #endif #ifdef TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# include "../test/boost_no_mem_templ_frnds.ipp" -namespace test = boost_no_member_template_friends; +# ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# error "Defect macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS is defined." +# endif #endif #ifdef TEST_BOOST_NO_MEMBER_TEMPLATES -# include "../test/boost_no_mem_templates.ipp" -namespace test = boost_no_member_templates; +# ifdef BOOST_NO_MEMBER_TEMPLATES +# error "Defect macro BOOST_NO_MEMBER_TEMPLATES is defined." +# endif #endif #ifdef TEST_BOOST_NO_NESTED_FRIENDSHIP -# include "../test/boost_no_nested_friendship.ipp" -namespace test = boost_no_nested_friendship; +# ifdef BOOST_NO_NESTED_FRIENDSHIP +# error "Defect macro BOOST_NO_NESTED_FRIENDSHIP is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_NOEXCEPT -# include "../test/boost_no_noexcept.ipp" -namespace test = boost_no_cxx11_noexcept; +# ifdef BOOST_NO_CXX11_NOEXCEPT +# error "Defect macro BOOST_NO_CXX11_NOEXCEPT is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_NULLPTR -# include "../test/boost_no_nullptr.ipp" -namespace test = boost_no_cxx11_nullptr; +# ifdef BOOST_NO_CXX11_NULLPTR +# error "Defect macro BOOST_NO_CXX11_NULLPTR is defined." +# endif #endif #ifdef TEST_BOOST_NO_OPERATORS_IN_NAMESPACE -# include "../test/boost_no_ops_in_namespace.ipp" -namespace test = boost_no_operators_in_namespace; +# ifdef BOOST_NO_OPERATORS_IN_NAMESPACE +# error "Defect macro BOOST_NO_OPERATORS_IN_NAMESPACE is defined." +# endif #endif #ifdef TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS -# include "../test/boost_no_part_spec_def_args.ipp" -namespace test = boost_no_partial_specialization_implicit_default_args; +# ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +# error "Defect macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS is defined." +# endif #endif #ifdef TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# include "../test/boost_no_partial_spec.ipp" -namespace test = boost_no_template_partial_specialization; +# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# error "Defect macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined." +# endif #endif #ifdef TEST_BOOST_NO_PRIVATE_IN_AGGREGATE -# include "../test/boost_no_priv_aggregate.ipp" -namespace test = boost_no_private_in_aggregate; +# ifdef BOOST_NO_PRIVATE_IN_AGGREGATE +# error "Defect macro BOOST_NO_PRIVATE_IN_AGGREGATE is defined." +# endif #endif #ifdef TEST_BOOST_NO_POINTER_TO_MEMBER_CONST -# include "../test/boost_no_ptr_mem_const.ipp" -namespace test = boost_no_pointer_to_member_const; +# ifdef BOOST_NO_POINTER_TO_MEMBER_CONST +# error "Defect macro BOOST_NO_POINTER_TO_MEMBER_CONST is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_RANGE_BASED_FOR -# include "../test/boost_no_range_based_for.ipp" -namespace test = boost_no_cxx11_range_based_for; +# ifdef BOOST_NO_CXX11_RANGE_BASED_FOR +# error "Defect macro BOOST_NO_CXX11_RANGE_BASED_FOR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_RAW_LITERALS -# include "../test/boost_no_raw_literals.ipp" -namespace test = boost_no_cxx11_raw_literals; +# ifdef BOOST_NO_CXX11_RAW_LITERALS +# error "Defect macro BOOST_NO_CXX11_RAW_LITERALS is defined." +# endif #endif #ifdef TEST_BOOST_NO_RESTRICT_REFERENCES -# include "../test/boost_no_restrict_references.ipp" -namespace test = boost_no_restrict_references; +# ifdef BOOST_NO_RESTRICT_REFERENCES +# error "Defect macro BOOST_NO_RESTRICT_REFERENCES is defined." +# endif #endif #ifdef TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION -# include "../test/boost_no_ret_det.ipp" -namespace test = boost_no_unreachable_return_detection; +# ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION +# error "Defect macro BOOST_NO_UNREACHABLE_RETURN_DETECTION is defined." +# endif #endif #ifdef TEST_BOOST_NO_RTTI -# include "../test/boost_no_rtti.ipp" -namespace test = boost_no_rtti; +# ifdef BOOST_NO_RTTI +# error "Defect macro BOOST_NO_RTTI is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_RVALUE_REFERENCES -# include "../test/boost_no_rvalue_references.ipp" -namespace test = boost_no_cxx11_rvalue_references; +# ifdef BOOST_NO_CXX11_RVALUE_REFERENCES +# error "Defect macro BOOST_NO_CXX11_RVALUE_REFERENCES is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_SCOPED_ENUMS -# include "../test/boost_no_scoped_enums.ipp" -namespace test = boost_no_cxx11_scoped_enums; +# ifdef BOOST_NO_CXX11_SCOPED_ENUMS +# error "Defect macro BOOST_NO_CXX11_SCOPED_ENUMS is defined." +# endif #endif #ifdef TEST_BOOST_NO_SFINAE -# include "../test/boost_no_sfinae.ipp" -namespace test = boost_no_sfinae; +# ifdef BOOST_NO_SFINAE +# error "Defect macro BOOST_NO_SFINAE is defined." +# endif #endif #ifdef TEST_BOOST_NO_SFINAE_EXPR -# include "../test/boost_no_sfinae_expr.ipp" -namespace test = boost_no_sfinae_expr; +# ifdef BOOST_NO_SFINAE_EXPR +# error "Defect macro BOOST_NO_SFINAE_EXPR is defined." +# endif #endif #ifdef TEST_BOOST_NO_STRINGSTREAM -# include "../test/boost_no_sstream.ipp" -namespace test = boost_no_stringstream; +# ifdef BOOST_NO_STRINGSTREAM +# error "Defect macro BOOST_NO_STRINGSTREAM is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_STATIC_ASSERT -# include "../test/boost_no_static_assert.ipp" -namespace test = boost_no_cxx11_static_assert; +# ifdef BOOST_NO_CXX11_STATIC_ASSERT +# error "Defect macro BOOST_NO_CXX11_STATIC_ASSERT is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_ALLOCATOR -# include "../test/boost_no_std_allocator.ipp" -namespace test = boost_no_std_allocator; +# ifdef BOOST_NO_STD_ALLOCATOR +# error "Defect macro BOOST_NO_STD_ALLOCATOR is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_DISTANCE -# include "../test/boost_no_std_distance.ipp" -namespace test = boost_no_std_distance; +# ifdef BOOST_NO_STD_DISTANCE +# error "Defect macro BOOST_NO_STD_DISTANCE is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_ITERATOR_TRAITS -# include "../test/boost_no_std_iter_traits.ipp" -namespace test = boost_no_std_iterator_traits; +# ifdef BOOST_NO_STD_ITERATOR_TRAITS +# error "Defect macro BOOST_NO_STD_ITERATOR_TRAITS is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_ITERATOR -# include "../test/boost_no_std_iterator.ipp" -namespace test = boost_no_std_iterator; +# ifdef BOOST_NO_STD_ITERATOR +# error "Defect macro BOOST_NO_STD_ITERATOR is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_LOCALE -# include "../test/boost_no_std_locale.ipp" -namespace test = boost_no_std_locale; +# ifdef BOOST_NO_STD_LOCALE +# error "Defect macro BOOST_NO_STD_LOCALE is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_MESSAGES -# include "../test/boost_no_std_messages.ipp" -namespace test = boost_no_std_messages; +# ifdef BOOST_NO_STD_MESSAGES +# error "Defect macro BOOST_NO_STD_MESSAGES is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_MIN_MAX -# include "../test/boost_no_std_min_max.ipp" -namespace test = boost_no_std_min_max; +# ifdef BOOST_NO_STD_MIN_MAX +# error "Defect macro BOOST_NO_STD_MIN_MAX is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -# include "../test/boost_no_std_oi_assign.ipp" -namespace test = boost_no_std_output_iterator_assign; +# ifdef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +# error "Defect macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_TYPEINFO -# include "../test/boost_no_std_typeinfo.ipp" -namespace test = boost_no_std_typeinfo; +# ifdef BOOST_NO_STD_TYPEINFO +# error "Defect macro BOOST_NO_STD_TYPEINFO is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_USE_FACET -# include "../test/boost_no_std_use_facet.ipp" -namespace test = boost_no_std_use_facet; +# ifdef BOOST_NO_STD_USE_FACET +# error "Defect macro BOOST_NO_STD_USE_FACET is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_WSTREAMBUF -# include "../test/boost_no_std_wstreambuf.ipp" -namespace test = boost_no_std_wstreambuf; +# ifdef BOOST_NO_STD_WSTREAMBUF +# error "Defect macro BOOST_NO_STD_WSTREAMBUF is defined." +# endif #endif #ifdef TEST_BOOST_NO_STD_WSTRING -# include "../test/boost_no_std_wstring.ipp" -namespace test = boost_no_std_wstring; +# ifdef BOOST_NO_STD_WSTRING +# error "Defect macro BOOST_NO_STD_WSTRING is defined." +# endif #endif #ifdef TEST_BOOST_NO_STDC_NAMESPACE -# include "../test/boost_no_stdc_namespace.ipp" -namespace test = boost_no_stdc_namespace; +# ifdef BOOST_NO_STDC_NAMESPACE +# error "Defect macro BOOST_NO_STDC_NAMESPACE is defined." +# endif #endif #ifdef TEST_BOOST_NO_SWPRINTF -# include "../test/boost_no_swprintf.ipp" -namespace test = boost_no_swprintf; +# ifdef BOOST_NO_SWPRINTF +# error "Defect macro BOOST_NO_SWPRINTF is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS -# include "../test/boost_no_tem_local_classes.ipp" -namespace test = boost_no_cxx11_local_class_template_parameters; +# ifdef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +# error "Defect macro BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES -# include "../test/boost_no_template_aliases.ipp" -namespace test = boost_no_cxx11_template_aliases; +# ifdef BOOST_NO_CXX11_TEMPLATE_ALIASES +# error "Defect macro BOOST_NO_CXX11_TEMPLATE_ALIASES is defined." +# endif #endif #ifdef TEST_BOOST_NO_TEMPLATED_IOSTREAMS -# include "../test/boost_no_template_streams.ipp" -namespace test = boost_no_templated_iostreams; +# ifdef BOOST_NO_TEMPLATED_IOSTREAMS +# error "Defect macro BOOST_NO_TEMPLATED_IOSTREAMS is defined." +# endif #endif #ifdef TEST_BOOST_NO_TEMPLATE_TEMPLATES -# include "../test/boost_no_template_template.ipp" -namespace test = boost_no_template_templates; +# ifdef BOOST_NO_TEMPLATE_TEMPLATES +# error "Defect macro BOOST_NO_TEMPLATE_TEMPLATES is defined." +# endif #endif #ifdef TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP -# include "../test/boost_no_two_phase_lookup.ipp" -namespace test = boost_no_two_phase_name_lookup; +# ifdef BOOST_NO_TWO_PHASE_NAME_LOOKUP +# error "Defect macro BOOST_NO_TWO_PHASE_NAME_LOOKUP is defined." +# endif #endif #ifdef TEST_BOOST_NO_TYPEID -# include "../test/boost_no_typeid.ipp" -namespace test = boost_no_typeid; +# ifdef BOOST_NO_TYPEID +# error "Defect macro BOOST_NO_TYPEID is defined." +# endif #endif #ifdef TEST_BOOST_NO_TYPENAME_WITH_CTOR -# include "../test/boost_no_typename_with_ctor.ipp" -namespace test = boost_no_typename_with_ctor; +# ifdef BOOST_NO_TYPENAME_WITH_CTOR +# error "Defect macro BOOST_NO_TYPENAME_WITH_CTOR is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_UNICODE_LITERALS -# include "../test/boost_no_unicode_literals.ipp" -namespace test = boost_no_cxx11_unicode_literals; +# ifdef BOOST_NO_CXX11_UNICODE_LITERALS +# error "Defect macro BOOST_NO_CXX11_UNICODE_LITERALS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX -# include "../test/boost_no_unified_init.ipp" -namespace test = boost_no_cxx11_unified_initialization_syntax; +# ifdef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +# error "Defect macro BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX is defined." +# endif #endif #ifdef TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -# include "../test/boost_no_using_breaks_adl.ipp" -namespace test = boost_function_scope_using_declaration_breaks_adl; +# ifdef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# error "Defect macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL is defined." +# endif #endif #ifdef TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -# include "../test/boost_no_using_decl_overld.ipp" -namespace test = boost_no_using_declaration_overloads_from_typename_base; +# ifdef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# error "Defect macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE is defined." +# endif #endif #ifdef TEST_BOOST_NO_USING_TEMPLATE -# include "../test/boost_no_using_template.ipp" -namespace test = boost_no_using_template; +# ifdef BOOST_NO_USING_TEMPLATE +# error "Defect macro BOOST_NO_USING_TEMPLATE is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_VARIADIC_MACROS -# include "../test/boost_no_variadic_macros.ipp" -namespace test = boost_no_cxx11_variadic_macros; +# ifdef BOOST_NO_CXX11_VARIADIC_MACROS +# error "Defect macro BOOST_NO_CXX11_VARIADIC_MACROS is defined." +# endif #endif #ifdef TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES -# include "../test/boost_no_variadic_templates.ipp" -namespace test = boost_no_cxx11_variadic_templates; +# ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES +# error "Defect macro BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined." +# endif #endif #ifdef TEST_BOOST_NO_VOID_RETURNS -# include "../test/boost_no_void_returns.ipp" -namespace test = boost_no_void_returns; +# ifdef BOOST_NO_VOID_RETURNS +# error "Defect macro BOOST_NO_VOID_RETURNS is defined." +# endif #endif #ifdef TEST_BOOST_NO_INTRINSIC_WCHAR_T -# include "../test/boost_no_wchar_t.ipp" -namespace test = boost_no_intrinsic_wchar_t; +# ifdef BOOST_NO_INTRINSIC_WCHAR_T +# error "Defect macro BOOST_NO_INTRINSIC_WCHAR_T is defined." +# endif #endif int main( int, char *[] ) { - return test::test(); + return 0; } diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 24284bee..7cd050e5 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 Sun Feb 5 19:09:22 2017 +# This file was automatically generated on Mon Apr 17 12:45:44 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the diff --git a/test/config_info.cpp b/test/config_info.cpp index 13cab45a..8bbc053b 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1152,6 +1152,11 @@ void print_boost_macros() + + + + + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index ddcdc6ba..41e24a99 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Feb 5 19:09:22 2017 +// This file was automatically generated on Mon Apr 17 12:45:44 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the diff --git a/tools/generate.cpp b/tools/generate.cpp index 0ea4b4cc..1ef9e69e 100644 --- a/tools/generate.cpp +++ b/tools/generate.cpp @@ -41,7 +41,7 @@ std::stringstream jamfile_v2; std::stringstream build_config_test; std::stringstream build_config_jamfile; std::set macro_list; - +std::set feature_list; void write_config_info() { @@ -192,8 +192,9 @@ void write_build_tests() time_t t = std::time(0); ofs << "// This file was automatically generated on " << std::ctime(&t); ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl; + ofs << "#include \n\n"; ofs << build_config_test.str() << std::endl; - ofs << "int main( int, char *[] )\n{\n" << " return test::test();\n}\n\n"; + ofs << "int main( int, char *[] )\n{\n" << " return 0;\n}\n\n"; } void write_build_check_jamfile() @@ -209,13 +210,6 @@ void write_build_check_jamfile() "# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n\n" "import modules ;\nimport path ; \n\n" "\n" - "rule run-simple ( requirements * : target-name )\n" - "{\n" - " obj $(target-name)_obj : test_case.cpp : $(requirements) ;\n" - " explicit $(target-name)_obj ;\n" - " unit-test $(target-name) : $(target-name)_obj : $(requirements) ;\n" - " explicit $(target-name) ;\n" - "}\n\n" ; ofs << build_config_jamfile.str() << std::endl; } @@ -288,13 +282,22 @@ void process_ipp_file(const fs::path& file, bool positive_test) // Generate data for the Build-checks test file: build_config_test << "#ifdef TEST_" << macro_name << std::endl; - build_config_test << "# include \"../test/" << file.leaf().string() << "\"\n"; - build_config_test << "namespace test = " << namespace_name << ";\n#endif\n"; + if (positive_test) + { + build_config_test << "# ifndef " << macro_name << "\n# error \"Feature macro " << macro_name << " is not defined.\"\n# endif\n"; + } + else + { + build_config_test << "# ifdef " << macro_name << "\n# error \"Defect macro " << macro_name << " is defined.\"\n# endif\n"; + } + build_config_test << "#endif\n"; // Generate data for the build-checks Jamfile: static const boost::regex feature_regex("boost_(?:no|has)_(.*)"); std::string feature_name = boost::regex_replace(namespace_name, feature_regex, "\\1"); - build_config_jamfile << "run-simple TEST_" << macro_name << " : " << feature_name << " ;\n"; + if(feature_list.find(feature_name) == feature_list.end()) + build_config_jamfile << "obj " << feature_name << " : test_case.cpp : TEST_" << macro_name << " ;\n"; + feature_list.insert(feature_name); } int cpp_main(int argc, char* argv[]) From 0e364efe0b2397cffd952dbaf80577609bf1058f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 17 Apr 2017 18:41:44 +0100 Subject: [PATCH 32/36] Add more macros for removed std lib features: BOOST_NO_CXX98_FUNCTION_BASE BOOST_NO_CXX98_BINDERS Added new documentation section for features that have been removed from the standard. --- checks/Jamfile.v2 | 5 ++- checks/test_case.cpp | 17 +++++++++- doc/macro_reference.qbk | 15 ++++++++- include/boost/config/stdlib/dinkumware.hpp | 2 ++ test/all/Jamfile.v2 | 11 ++++++- test/boost_no_cxx98_binders.ipp | 30 ++++++++++++++++++ test/boost_no_cxx98_function_base.ipp | 28 ++++++++++++++++ test/boost_no_cxx98_random_shuffle.ipp | 23 ++++++++++++++ test/config_info.cpp | 7 ++++ test/config_test.cpp | 32 ++++++++++++++++++- test/no_cxx98_binders_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx98_binders_pass.cpp | 37 ++++++++++++++++++++++ test/no_cxx98_function_base_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx98_function_base_pass.cpp | 37 ++++++++++++++++++++++ test/no_cxx98_random_shuffle_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx98_random_shuffle_pass.cpp | 37 ++++++++++++++++++++++ 16 files changed, 387 insertions(+), 5 deletions(-) create mode 100644 test/boost_no_cxx98_binders.ipp create mode 100644 test/boost_no_cxx98_function_base.ipp create mode 100644 test/boost_no_cxx98_random_shuffle.ipp create mode 100644 test/no_cxx98_binders_fail.cpp create mode 100644 test/no_cxx98_binders_pass.cpp create mode 100644 test/no_cxx98_function_base_fail.cpp create mode 100644 test/no_cxx98_function_base_pass.cpp create mode 100644 test/no_cxx98_random_shuffle_fail.cpp create mode 100644 test/no_cxx98_random_shuffle_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 1f0a3025..adcd0c02 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Apr 17 12:45:44 2017 +# This file was automatically generated on Mon Apr 17 18:35:54 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -127,6 +127,9 @@ obj cxx14_std_exchange : test_case.cpp : TEST_BOOST_NO_CXX14_STD_EXCHANG obj cxx14_variable_templates : test_case.cpp : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ; obj cxx17_std_apply : test_case.cpp : TEST_BOOST_NO_CXX17_STD_APPLY ; obj cxx17_std_invoke : test_case.cpp : TEST_BOOST_NO_CXX17_STD_INVOKE ; +obj cxx98_binders : test_case.cpp : TEST_BOOST_NO_CXX98_BINDERS ; +obj cxx98_function_base : test_case.cpp : TEST_BOOST_NO_CXX98_FUNCTION_BASE ; +obj cxx98_random_shuffle : test_case.cpp : TEST_BOOST_NO_CXX98_RANDOM_SHUFFLE ; obj cxx11_hdr_functional : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL ; obj cxx11_decltype : test_case.cpp : TEST_BOOST_NO_CXX11_DECLTYPE ; obj cxx11_decltype_n3276 : test_case.cpp : TEST_BOOST_NO_CXX11_DECLTYPE_N3276 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index eacaf16e..6689d1d7 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 12:45:44 2017 +// This file was automatically generated on Mon Apr 17 18:35:54 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -591,6 +591,21 @@ # error "Defect macro BOOST_NO_CXX17_STD_INVOKE is defined." # endif #endif +#ifdef TEST_BOOST_NO_CXX98_BINDERS +# ifdef BOOST_NO_CXX98_BINDERS +# error "Defect macro BOOST_NO_CXX98_BINDERS is defined." +# endif +#endif +#ifdef TEST_BOOST_NO_CXX98_FUNCTION_BASE +# ifdef BOOST_NO_CXX98_FUNCTION_BASE +# error "Defect macro BOOST_NO_CXX98_FUNCTION_BASE is defined." +# endif +#endif +#ifdef TEST_BOOST_NO_CXX98_RANDOM_SHUFFLE +# ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE +# error "Defect macro BOOST_NO_CXX98_RANDOM_SHUFFLE is defined." +# endif +#endif #ifdef TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL # ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL # error "Defect macro BOOST_NO_CXX11_HDR_FUNCTIONAL is defined." diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 3ada8111..6e981225 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -943,7 +943,20 @@ that are not yet supported by a particular compiler or library. [[Macro ][Description ]] [[`BOOST_NO_CXX17_STD_APPLY`][The compiler does not support `std::apply()`.]] [[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]] -[[`BOOST_NO_CXX98_RANDOM_SHUFFLE`][The compiler does no longer support `std::random_shuffle()`. It was deprecated in C++14 and is removed from C++17.]] +] + +[endsect] + +[section Macros that describe features that have been removed from the standard.] + +The following macros describe features which were required by one version of the standard, but have been removed by later versions. + +[table +[[Macro ][Description ]] +[[`BOOST_NO_CXX98_RANDOM_SHUFFLE`][The standard library no longer supports `std::random_shuffle()`. It was deprecated in C++11 and is removed from C++14.]] +[[`BOOST_NO_AUTO_PTR`][The standard library no longer supports `std::auto_ptr`. It was deprecated in C++11 and is removed from C++14.]] +[[`BOOST_NO_CXX98_FUNCTION_BASE`][The standard library no longer supports `std::unary_function` and `std::binary_function`. They were deprecated in C++11 and is removed from C++14.]] +[[`BOOST_NO_CXX98_BINDERS`][The standard library no longer supports `std::bind1st`, `std::bind2nd`, `std::ptr_fun` and `std::mem_fun`. They were deprecated in C++11 and is removed from C++14.]] ] [endsect] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 85e5321b..86fa7fe6 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -196,6 +196,8 @@ # if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0) # define BOOST_NO_AUTO_PTR # define BOOST_NO_CXX98_RANDOM_SHUFFLE +# define BOOST_NO_CXX98_FUNCTION_BASE +# define BOOST_NO_CXX98_BINDERS # endif #endif diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 7cd050e5..f99040be 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 Mon Apr 17 12:45:44 2017 +# This file was automatically generated on Mon Apr 17 18:35:54 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -370,6 +370,15 @@ test-suite "BOOST_NO_CXX17_STD_APPLY" : test-suite "BOOST_NO_CXX17_STD_INVOKE" : [ run ../no_cxx17_std_invoke_pass.cpp ] [ compile-fail ../no_cxx17_std_invoke_fail.cpp ] ; +test-suite "BOOST_NO_CXX98_BINDERS" : +[ run ../no_cxx98_binders_pass.cpp ] +[ compile-fail ../no_cxx98_binders_fail.cpp ] ; +test-suite "BOOST_NO_CXX98_FUNCTION_BASE" : +[ run ../no_cxx98_function_base_pass.cpp ] +[ compile-fail ../no_cxx98_function_base_fail.cpp ] ; +test-suite "BOOST_NO_CXX98_RANDOM_SHUFFLE" : +[ run ../no_cxx98_random_shuffle_pass.cpp ] +[ compile-fail ../no_cxx98_random_shuffle_fail.cpp ] ; test-suite "BOOST_NO_CXX11_HDR_FUNCTIONAL" : [ run ../no_cxx_hdr_functional_pass.cpp ] [ compile-fail ../no_cxx_hdr_functional_fail.cpp ] ; diff --git a/test/boost_no_cxx98_binders.ipp b/test/boost_no_cxx98_binders.ipp new file mode 100644 index 00000000..c287e35c --- /dev/null +++ b/test/boost_no_cxx98_binders.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2017. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CXX98_BINDERS +// TITLE: std::bind1st, prt_fun and mem_fun +// DESCRIPTION: The std lib has C++98 binders and adaptors. + +#include + +namespace boost_no_cxx98_binders{ + +int f2(int a, int b) { return a + b; } + +struct A +{ + int f1(int a) { return a; } +}; + + +int test() +{ + A a; + return std::bind1st(std::ptr_fun(f2), 0)(0) + std::bind1st(std::mem_fun(&A::f1), &a)(0); +} + +} diff --git a/test/boost_no_cxx98_function_base.ipp b/test/boost_no_cxx98_function_base.ipp new file mode 100644 index 00000000..6bc897b3 --- /dev/null +++ b/test/boost_no_cxx98_function_base.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2017. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CXX98_FUNCTION_BASE +// TITLE: std::unary_function and std::binary_function +// DESCRIPTION: The std lib has unary_function and binary_function. + +#include + +namespace boost_no_cxx98_function_base{ + +struct A : public std::unary_function{}; +struct B : public std::binary_function{}; + +int test() +{ + A a; + B b; + (void)a; + (void)b; + return static_cast(0); +} + +} diff --git a/test/boost_no_cxx98_random_shuffle.ipp b/test/boost_no_cxx98_random_shuffle.ipp new file mode 100644 index 00000000..abef913f --- /dev/null +++ b/test/boost_no_cxx98_random_shuffle.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2017. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CXX98_RANDOM_SHUFFLE +// TITLE: std::random_shuffle +// DESCRIPTION: The std lib has random_shuffle. + +#include + +namespace boost_no_cxx98_random_shuffle{ + +int test() +{ + int my_array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + std::random_shuffle(&my_array[0], &my_array[9] ); + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 8bbc053b..7f401181 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1078,6 +1078,9 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES); PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); + PRINT_MACRO(BOOST_NO_CXX98_BINDERS); + PRINT_MACRO(BOOST_NO_CXX98_FUNCTION_BASE); + PRINT_MACRO(BOOST_NO_CXX98_RANDOM_SHUFFLE); PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); PRINT_MACRO(BOOST_NO_EXCEPTIONS); @@ -1153,6 +1156,10 @@ void print_boost_macros() + + + + diff --git a/test/config_test.cpp b/test/config_test.cpp index 41e24a99..d94a438d 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 12:45:44 2017 +// This file was automatically generated on Mon Apr 17 18:35:54 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -337,6 +337,21 @@ namespace boost_no_cxx17_std_apply = empty_boost; #else namespace boost_no_cxx17_std_invoke = empty_boost; #endif +#ifndef BOOST_NO_CXX98_BINDERS +#include "boost_no_cxx98_binders.ipp" +#else +namespace boost_no_cxx98_binders = empty_boost; +#endif +#ifndef BOOST_NO_CXX98_FUNCTION_BASE +#include "boost_no_cxx98_function_base.ipp" +#else +namespace boost_no_cxx98_function_base = empty_boost; +#endif +#ifndef BOOST_NO_CXX98_RANDOM_SHUFFLE +#include "boost_no_cxx98_random_shuffle.ipp" +#else +namespace boost_no_cxx98_random_shuffle = empty_boost; +#endif #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL #include "boost_no_cxx_hdr_functional.ipp" #else @@ -1606,6 +1621,21 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX17_STD_INVOKE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx98_binders::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX98_BINDERS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx98_function_base::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX98_FUNCTION_BASE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx98_random_shuffle::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX98_RANDOM_SHUFFLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_hdr_functional::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_HDR_FUNCTIONAL at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_cxx98_binders_fail.cpp b/test/no_cxx98_binders_fail.cpp new file mode 100644 index 00000000..d17f1490 --- /dev/null +++ b/test/no_cxx98_binders_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 18:06:53 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_BINDERS +// This file should not compile, if it does then +// BOOST_NO_CXX98_BINDERS should not be defined. +// See file boost_no_cxx98_binders.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_NO_CXX98_BINDERS +#include "boost_no_cxx98_binders.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_binders::test(); +} + diff --git a/test/no_cxx98_binders_pass.cpp b/test/no_cxx98_binders_pass.cpp new file mode 100644 index 00000000..55878792 --- /dev/null +++ b/test/no_cxx98_binders_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 18:06:53 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_BINDERS +// This file should compile, if it does not then +// BOOST_NO_CXX98_BINDERS should be defined. +// See file boost_no_cxx98_binders.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX98_BINDERS +#include "boost_no_cxx98_binders.ipp" +#else +namespace boost_no_cxx98_binders = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_binders::test(); +} + diff --git a/test/no_cxx98_function_base_fail.cpp b/test/no_cxx98_function_base_fail.cpp new file mode 100644 index 00000000..132edce8 --- /dev/null +++ b/test/no_cxx98_function_base_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 18:35:53 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_FUNCTION_BASE +// This file should not compile, if it does then +// BOOST_NO_CXX98_FUNCTION_BASE should not be defined. +// See file boost_no_cxx98_function_base.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_NO_CXX98_FUNCTION_BASE +#include "boost_no_cxx98_function_base.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_function_base::test(); +} + diff --git a/test/no_cxx98_function_base_pass.cpp b/test/no_cxx98_function_base_pass.cpp new file mode 100644 index 00000000..a608e75b --- /dev/null +++ b/test/no_cxx98_function_base_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 18:35:53 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_FUNCTION_BASE +// This file should compile, if it does not then +// BOOST_NO_CXX98_FUNCTION_BASE should be defined. +// See file boost_no_cxx98_function_base.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX98_FUNCTION_BASE +#include "boost_no_cxx98_function_base.ipp" +#else +namespace boost_no_cxx98_function_base = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_function_base::test(); +} + diff --git a/test/no_cxx98_random_shuffle_fail.cpp b/test/no_cxx98_random_shuffle_fail.cpp new file mode 100644 index 00000000..419e22ed --- /dev/null +++ b/test/no_cxx98_random_shuffle_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 17:54:47 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_RANDOM_SHUFFLE +// This file should not compile, if it does then +// BOOST_NO_CXX98_RANDOM_SHUFFLE should not be defined. +// See file boost_no_cxx98_random_shuffle.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE +#include "boost_no_cxx98_random_shuffle.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_random_shuffle::test(); +} + diff --git a/test/no_cxx98_random_shuffle_pass.cpp b/test/no_cxx98_random_shuffle_pass.cpp new file mode 100644 index 00000000..1d3355e8 --- /dev/null +++ b/test/no_cxx98_random_shuffle_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 17 17:54:47 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX98_RANDOM_SHUFFLE +// This file should compile, if it does not then +// BOOST_NO_CXX98_RANDOM_SHUFFLE should be defined. +// See file boost_no_cxx98_random_shuffle.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX98_RANDOM_SHUFFLE +#include "boost_no_cxx98_random_shuffle.ipp" +#else +namespace boost_no_cxx98_random_shuffle = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx98_random_shuffle::test(); +} + From 5317fd4193f50db8985ba6ce13cc4f97ccf9be87 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 17 Apr 2017 18:42:27 +0100 Subject: [PATCH 33/36] Regenerate docs. --- .../boost_config/boost_macro_reference.html | 80 ++++++++++++++++++- doc/html/index.html | 4 +- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 9f308c01..da3866c0 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -43,6 +43,8 @@ that allow use of C++14 features with C++11 or earlier compilers
Macros that describe C++17 features not supported
+
Macros + that describe features that have been removed from the standard.
Boost Helper Macros
Boost @@ -3815,6 +3817,36 @@

+ +
+ +
+ +

+ The following macros describe features which were required by one version + of the standard, but have been removed by later versions. +

+
++++ + + + + + - + + + + + + + + + + + + + +
+

+ Macro +

+
+

+ Description +

+

@@ -3823,10 +3855,54 @@

- The compiler does no longer support std::random_shuffle(). It was deprecated in C++14 and is removed from C++17. + The standard library no longer supports std::random_shuffle(). It was deprecated in C++11 and + is removed from C++14.

+

+ BOOST_NO_AUTO_PTR +

+
+

+ The standard library no longer supports std::auto_ptr. + It was deprecated in C++11 and is removed from C++14. +

+
+

+ BOOST_NO_CXX98_FUNCTION_BASE +

+
+

+ The standard library no longer supports std::unary_function + and std::binary_function. They were deprecated + in C++11 and is removed from C++14. +

+
+

+ BOOST_NO_CXX98_BINDERS +

+
+

+ The standard library no longer supports std::bind1st, + std::bind2nd, std::ptr_fun + and std::mem_fun. They were deprecated + in C++11 and is removed from C++14. +

+
diff --git a/doc/html/index.html b/doc/html/index.html index 85a8682d..76ba53d1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -74,6 +74,8 @@ that allow use of C++14 features with C++11 or earlier compilers
Macros that describe C++17 features not supported
+
Macros + that describe features that have been removed from the standard.
Boost Helper Macros
Boost @@ -990,7 +992,7 @@
- +

Last revised: April 16, 2017 at 08:38:10 GMT

Last revised: April 17, 2017 at 17:42:09 GMT


From 912ebda1ca85fecc6bc6ca4a08319764460fb817 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 23 Apr 2017 22:11:56 -0500 Subject: [PATCH 34/36] Bump to 1.65.0. --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 03b33f9a..725165f4 100644 --- a/include/boost/version.hpp +++ b/include/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 106400 +#define BOOST_VERSION 106500 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_64" +#define BOOST_LIB_VERSION "1_65" #endif From 19766b0a0e3d8c92e4c0d058cc47190ce7ea1528 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 26 Apr 2017 19:43:11 +0100 Subject: [PATCH 35/36] Older Oracle Solaris compiles have no ::intptr_t. Defer to whether INTPTR_MAX is defined or not on sun whenever is available. --- include/boost/cstdint.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index e5507a5f..31b67417 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -374,7 +374,7 @@ namespace boost || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ || defined(__CYGWIN__) \ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun) || defined(INTPTR_MAX) + || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || (defined(sun) && !defined(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX) namespace boost { using ::intptr_t; From 0b508cb2c9c901c18629e689de7ae8b8658ce3e2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 Apr 2017 17:22:18 +0000 Subject: [PATCH 36/36] noreturn attribute is apparently not supported by Oracle 12.4 --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index dda34259..6abec22f 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -643,7 +643,7 @@ namespace std{ using ::type_info; } # define BOOST_NORETURN __declspec(noreturn) # elif defined(__GNUC__) # define BOOST_NORETURN __attribute__ ((__noreturn__)) -# elif defined(__has_attribute) && defined(__SUNPRO_CC) +# elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) # if __has_attribute(noreturn) # define BOOST_NORETURN [[noreturn]] # endif