diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..17bac5cd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +checks/architecture/bin diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..ff0257a7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,251 @@ +# Copyright 2016, 2017, 2018 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) + +language: cpp + +sudo: false + +branches: + only: + - master + - develop + - /feature\/.*/ + +env: + matrix: + - BOGUS_JOB=true + +matrix: + + exclude: + - env: BOGUS_JOB=true + + include: + - os: linux + env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11 + + - os: linux + compiler: g++-4.4 + env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x + addons: + apt: + packages: + - g++-4.4 + sources: + - ubuntu-toolchain-r-test + + - os: linux + compiler: g++-4.6 + env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x + addons: + apt: + packages: + - g++-4.6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11 + addons: + apt: + packages: + - g++-4.9 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17 + addons: + apt: + packages: + - g++-8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-3.5 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.5 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-3.6 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.6 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-3.7 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + compiler: clang++-4.0 + env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-4.0 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty-4.0 + + - os: linux + compiler: clang++-5.0 + env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z + addons: + apt: + packages: + - clang-5.0 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty-5.0 + + - os: linux + compiler: clang++-libc++ + env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z + addons: + apt: + packages: + - libc++-dev + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode9.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode9 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode8.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode8 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z + osx_image: xcode6.4 + +install: + - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true + - cd .. + - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + - cd boost-root + - git submodule update --init tools/build + - git submodule update --init libs/detail + - git submodule update --init libs/core + - git submodule update --init libs/assert + - git submodule update --init libs/type_traits + - cp -r $TRAVIS_BUILD_DIR/* libs/config + - ./bootstrap.sh + - ./b2 headers + +script: + - |- + echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam + - IFS=',' + - for CXXLOCAL in $CXXSTD; do (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET cxxstd=$CXXLOCAL $CXXSTD_DIALECT && echo With Standard Version $CXXLOCAL && ./config_info_travis && rm ./config_info_travis) done + - unset IFS + - ./b2 -j3 libs/config/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT + +notifications: + email: + on_success: always diff --git a/appveyor.bat b/appveyor.bat new file mode 100644 index 00000000..fb6d5279 --- /dev/null +++ b/appveyor.bat @@ -0,0 +1,12 @@ +IF NOT DEFINED CXXSTD ( +ECHO %ARGS:"=% +..\..\..\b2 config_info_travis_install %ARGS:"=% +config_info_travis +del config_info_travis.exe +) +IF DEFINED CXXSTD FOR %%A IN (%CXXSTD%) DO ( +ECHO %ARGS:"=% +..\..\..\b2 -a -d2 config_info_travis_install %ARGS:"=% cxxstd=%%A +config_info_travis +del config_info_travis.exe +) \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..7d04c714 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,67 @@ +# Copyright 2016 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) + +version: 1.0.{build}-{branch} + +shallow_clone: true + +branches: + only: + - master + - develop + +platform: + - x64 + +environment: + matrix: + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARGS: --toolset=msvc-14.1 address-model=64 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARGS: --toolset=msvc-14.1 address-model=32 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest cxxflags=-permissive- + - ARGS: --toolset=msvc-9.0 address-model=32 + - ARGS: --toolset=msvc-10.0 address-model=32 + - ARGS: --toolset=msvc-11.0 address-model=32 + - ARGS: --toolset=msvc-12.0 address-model=32 + - ARGS: --toolset=msvc-14.0 address-model=32 + - ARGS: --toolset=msvc-12.0 address-model=64 + - ARGS: --toolset=msvc-14.0 address-model=64 + - ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest + - ARGS: --toolset=gcc address-model=64 + CXXSTD: 03,11,14,1z + PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% + - ARGS: --toolset=gcc address-model=64 + CXXSTD: 03,11,14,1z + PATH: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% + - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition + CXXSTD: 03,11,14,1z + PATH: C:\MinGW\bin;%PATH% + - ARGS: --toolset=gcc address-model=64 + CXXSTD: 03,11,14,1z + PATH: C:\cygwin64\bin;%PATH% + - ARGS: --toolset=gcc address-model=32 + CXXSTD: 03,11,14,1z + PATH: C:\cygwin\bin;%PATH% + +install: + - cd .. + - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root + - cd boost-root + - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config + - git submodule update --init tools/build + - git submodule update --init libs/detail + - git submodule update --init libs/core + - git submodule update --init libs/assert + - git submodule update --init libs/type_traits + - bootstrap + - b2 headers + +build: off + +test_script: + - cd libs\config\test + - ..\appveyor.bat + - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index fc74ed39..0c26bce1 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 Fri Oct 14 20:08:50 2016 +# This file was automatically generated on Wed Apr 18 20:03:40 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -9,210 +9,199 @@ import modules ; import path ; -import testing ; -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_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_VARIABLE_TEMPLATES : cxx14_variable_templates ; -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_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 pragma_detect_mismatch : test_case.cpp : TEST_BOOST_HAS_PRAGMA_DETECT_MISMATCH ; +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 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_defaulted_moves : test_case.cpp : TEST_BOOST_NO_CXX11_DEFAULTED_MOVES ; +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_pointer_traits : test_case.cpp : TEST_BOOST_NO_CXX11_POINTER_TRAITS ; +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_fold_expressions : test_case.cpp : TEST_BOOST_NO_CXX17_FOLD_EXPRESSIONS ; +obj cxx17_if_constexpr : test_case.cpp : TEST_BOOST_NO_CXX17_IF_CONSTEXPR ; +obj cxx17_inline_variables : test_case.cpp : TEST_BOOST_NO_CXX17_INLINE_VARIABLES ; +obj cxx17_iterator_traits : test_case.cpp : TEST_BOOST_NO_CXX17_ITERATOR_TRAITS ; +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 cxx17_structured_bindings : test_case.cpp : TEST_BOOST_NO_CXX17_STRUCTURED_BINDINGS ; +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 ; +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/architecture/.gitignore b/checks/architecture/.gitignore new file mode 100644 index 00000000..ba077a40 --- /dev/null +++ b/checks/architecture/.gitignore @@ -0,0 +1 @@ +bin diff --git a/checks/test_case.cpp b/checks/test_case.cpp index d3ad56ca..7d9cb10c 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Oct 14 20:08:50 2016 +// This file was automatically generated on Wed Apr 18 20:03:40 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -9,793 +9,981 @@ // 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_PRAGMA_DETECT_MISMATCH +# ifndef BOOST_HAS_PRAGMA_DETECT_MISMATCH +# error "Feature macro BOOST_HAS_PRAGMA_DETECT_MISMATCH 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; -#endif -#ifdef TEST_BOOST_HAS_TR1_ARRAY -# include "../test/boost_has_tr1_array.ipp" -namespace test = boost_has_tr1_array; -#endif -#ifdef TEST_BOOST_HAS_TR1_BIND -# include "../test/boost_has_tr1_bind.ipp" -namespace test = boost_has_tr1_bind; -#endif -#ifdef TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS -# include "../test/boost_has_tr1_complex_over.ipp" -namespace test = boost_has_tr1_complex_overloads; -#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; -#endif -#ifdef TEST_BOOST_HAS_TR1_FUNCTION -# include "../test/boost_has_tr1_function.ipp" -namespace test = boost_has_tr1_function; -#endif -#ifdef TEST_BOOST_HAS_TR1_HASH -# include "../test/boost_has_tr1_hash.ipp" -namespace test = boost_has_tr1_hash; -#endif -#ifdef TEST_BOOST_HAS_TR1_MEM_FN -# include "../test/boost_has_tr1_mem_fn.ipp" -namespace test = boost_has_tr1_mem_fn; -#endif -#ifdef TEST_BOOST_HAS_TR1_RANDOM -# include "../test/boost_has_tr1_random.ipp" -namespace test = boost_has_tr1_random; -#endif -#ifdef TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER -# include "../test/boost_has_tr1_ref_wrap.ipp" -namespace test = boost_has_tr1_reference_wrapper; -#endif -#ifdef TEST_BOOST_HAS_TR1_REGEX -# include "../test/boost_has_tr1_regex.ipp" -namespace test = boost_has_tr1_regex; -#endif -#ifdef TEST_BOOST_HAS_TR1_RESULT_OF -# include "../test/boost_has_tr1_result_of.ipp" -namespace test = boost_has_tr1_result_of; -#endif -#ifdef TEST_BOOST_HAS_TR1_SHARED_PTR -# include "../test/boost_has_tr1_shared_ptr.ipp" -namespace test = boost_has_tr1_shared_ptr; -#endif -#ifdef TEST_BOOST_HAS_TR1_TUPLE -# include "../test/boost_has_tr1_tuple.ipp" -namespace test = boost_has_tr1_tuple; -#endif -#ifdef TEST_BOOST_HAS_TR1_TYPE_TRAITS -# include "../test/boost_has_tr1_type_traits.ipp" -namespace test = boost_has_tr1_type_traits; -#endif -#ifdef TEST_BOOST_HAS_TR1_UNORDERED_MAP -# include "../test/boost_has_tr1_unordered_map.ipp" -namespace test = boost_has_tr1_unordered_map; -#endif -#ifdef TEST_BOOST_HAS_TR1_UNORDERED_SET -# include "../test/boost_has_tr1_unordered_set.ipp" -namespace test = boost_has_tr1_unordered_set; -#endif -#ifdef TEST_BOOST_HAS_TR1_UTILITY -# include "../test/boost_has_tr1_utility.ipp" -namespace test = boost_has_tr1_utility; +# ifndef BOOST_HAS_STLP_USE_FACET +# error "Feature macro BOOST_HAS_STLP_USE_FACET 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_DEFAULTED_MOVES +# ifdef BOOST_NO_CXX11_DEFAULTED_MOVES +# error "Defect macro BOOST_NO_CXX11_DEFAULTED_MOVES 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_POINTER_TRAITS +# ifdef BOOST_NO_CXX11_POINTER_TRAITS +# error "Defect macro BOOST_NO_CXX11_POINTER_TRAITS 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 +# 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 +# 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_FOLD_EXPRESSIONS +# ifdef BOOST_NO_CXX17_FOLD_EXPRESSIONS +# error "Defect macro BOOST_NO_CXX17_FOLD_EXPRESSIONS is defined." +# endif +#endif +#ifdef TEST_BOOST_NO_CXX17_IF_CONSTEXPR +# ifdef BOOST_NO_CXX17_IF_CONSTEXPR +# error "Defect macro BOOST_NO_CXX17_IF_CONSTEXPR is defined." +# endif +#endif +#ifdef TEST_BOOST_NO_CXX17_INLINE_VARIABLES +# ifdef BOOST_NO_CXX17_INLINE_VARIABLES +# error "Defect macro BOOST_NO_CXX17_INLINE_VARIABLES is defined." +# endif +#endif +#ifdef TEST_BOOST_NO_CXX17_ITERATOR_TRAITS +# ifdef BOOST_NO_CXX17_ITERATOR_TRAITS +# error "Defect macro BOOST_NO_CXX17_ITERATOR_TRAITS is defined." +# endif +#endif +#ifdef 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_CXX17_STRUCTURED_BINDINGS +# ifdef BOOST_NO_CXX17_STRUCTURED_BINDINGS +# error "Defect macro BOOST_NO_CXX17_STRUCTURED_BINDINGS 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 -# 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 +# 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/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/doc/config.qbk b/doc/config.qbk index fd10efc9..3dc11ba6 100644 --- a/doc/config.qbk +++ b/doc/config.qbk @@ -22,7 +22,7 @@ Distributed under the Boost Software License, Version 1.0. [def __BOOST_REGRESSION_TEST_DRIVER__ [@../../../../tools/regression/doc/index.html boost regression test driver]] [def __BOOST_CONFIG_HEADER__ [@../../../../boost/config.hpp ]] [def __BOOST_CONFIG_USER_HEADER__ [@../../../../boost/config/user.hpp ]] -[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/user.hpp ]] +[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/detail/suffix.hpp ]] [def __BOOST_CONFIG_DIR__ [']`/boost/config/`] diff --git a/doc/guidelines.qbk b/doc/guidelines.qbk index 93436457..19fefc66 100644 --- a/doc/guidelines.qbk +++ b/doc/guidelines.qbk @@ -191,9 +191,9 @@ modifying this file as it breaks dependencies for everyone. This file should include only "boilerplate" configuration code, and generally should change only when new macros are added. -[@../../../../boost/config/select_compiler_config.hpp ], -[@../../../../boost/config/select_platform_config.hpp ] and -[@../../../../boost/config/select_stdlib_config.hpp ] +[@../../../../boost/config/detail/select_compiler_config.hpp ], +[@../../../../boost/config/detail/select_platform_config.hpp ] and +[@../../../../boost/config/detail/select_stdlib_config.hpp ] are included by default and should change only if support for a new compiler/standard library/platform is added. diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 691a11c5..ed19e071 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -41,6 +41,10 @@ that describe C++14 features not supported
Macros 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 @@ -515,7 +519,7 @@ is covered by Core Language DR337, but is not part of the current standard. Fortunately most compilers that support SFINAE also support this - DR. + DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR

@@ -813,6 +817,24 @@ + +

+ BOOST_NO_RESTRICT_REFERENCES +

+ + +

+ Compiler +

+ + +

+ Compiler-specific restrict + keyword can not be applied to references. +

+ + +

BOOST_NO_RTTI @@ -844,7 +866,8 @@

The compiler does not support the "Substitution Failure Is - Not An Error" meta-programming idiom. + Not An Error" meta-programming idiom. This is the lightweight + pre-C++11 version of SFINAE.

@@ -862,6 +885,8 @@

The compiler does not support usage of SFINAE with arbitrary expressions. + This is the post-C++11 SFINAE, but excludes a few specific corner + cases, see also BOOST_NO_CXX11_SFINAE_EXPR.

@@ -914,7 +939,8 @@

The C++ implementation fails to provide the std::iterator - class. + class. Note that post C++17, this macro is re-purposed to indicate + that std::iterator has been removed or deprecated.

@@ -2593,6 +2619,19 @@ + +

+ BOOST_NO_CXX11_DEFAULTED_MOVES +

+ + +

+ The compiler does not support defaulted move constructor or assignment. + Other defaulted functions may still be supported. +

+ + +

BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS @@ -2992,6 +3031,18 @@ + +

+ BOOST_NO_CXX11_POINTER_TRAITS +

+ + +

+ The standard library does not provide a C++11 version of std::pointer_traits in <memory>. +

+ + +

BOOST_NO_CXX11_RANGE_BASED_FOR @@ -3053,6 +3104,22 @@ + +

+ BOOST_NO_CXX11_SFINAE_EXPR +

+ + +

+ The compiler does not support usage of C++11 SFINAE with arbitrary + expressions. Use this macro only if you are using all of the features + of SFINAE including substitution-failure-on-private-member-access. + Otherwise use BOOST_NO_SFINAE_EXPR or BOOST_NO_SFINAE which get + defined for fewer compilers. +

+ + +

BOOST_NO_CXX11_SMART_PTR @@ -3600,6 +3667,18 @@ + +

+ BOOST_NO_CXX14_STD_EXCHANGE +

+ + +

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

+ + +

BOOST_NO_CXX14_GENERIC_LAMBDAS @@ -3715,6 +3794,170 @@

+

+ 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. +

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

+ 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_CXX17_ITERATOR_TRAITS +

+
+

+ The compiler does not support SFINAE-friendly std::iterator_traits. +

+
+

+ BOOST_NO_CXX17_IF_CONSTEXPR +

+
+

+ The compiler does not support if + constexpr. +

+
+
+
+ +

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

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

+ 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. +

+
+
+
+ @@ -3752,7 +3995,7 @@ that is not otherwise described by one of the other Boost.Config macros. To use the macro you must first

-
#include <boost/detail/workaround.hpp>
+
#include <boost/config/workaround.hpp>
 

usage is then: @@ -3783,7 +4026,7 @@

Note: the ultimate source of documentation - for this macro is in boost/detail/workaround.hpp. + for this macro is in boost/config/workaround.hpp.

@@ -3979,7 +4222,16 @@

- BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) + BOOST_EXPLICIT_TEMPLATE_TYPE(t) +

+

+ BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) +

+

+ BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) +

+

+ BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)

@@ -4121,6 +4373,35 @@ + +

+ BOOST_RESTRICT +

+ + +

+ This macro can be used in place of the compiler specific variant + of the C99 restrict + keyword to notify the compiler that, for the lifetime of the qualified + pointer variable, only it and its derivative value will be used + to gain access to the object it references. This limits the effect + of pointer aliasing and helps the optimizers in generating better + code. However, i this condition is violated, undefined behavior + may occurs. +

+

+ Usage example: +

+
void perform_computation( float* BOOST_RESTRICT in, float* BOOST_RESTRICT out )
+{
+  *out = *in * 0.5f;
+}
+
+

+

+ + +

BOOST_FORCEINLINE @@ -4219,6 +4500,8 @@

BOOST_LIKELY(X) +

+

BOOST_UNLIKELY(X)

@@ -4259,6 +4542,82 @@

+ + +

+ BOOST_MAY_ALIAS, + BOOST_NO_MAY_ALIAS +

+ + +

+ BOOST_MAY_ALIAS + expands to a type attribute that can be used to mark types that + may alias other types. Pointers or references to such marked types + can be used to access objects of other types. If the compiler supports + this feature BOOST_NO_MAY_ALIAS + is not defined. Otherwise BOOST_MAY_ALIAS + expands to nothing and BOOST_NO_MAY_ALIAS + is defined. +

+

+ Usage example: +

+
struct BOOST_MAY_ALIAS aliasing_struct;
+typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+
+

+

+ + + + +

+ BOOST_PRAGMA_MESSAGE(M) +

+ + +

+ Defined in header <boost/config/pragma_message.hpp>, + this macro expands to the equivalent of #pragma + message(M). + M must be a string + literal. +

+

+ Example: BOOST_PRAGMA_MESSAGE("This header + is deprecated.") +

+

+ The messages issued by BOOST_PRAGMA_MESSAGE + can be suppressed by defining the macro BOOST_DISABLE_PRAGMA_MESSAGE. +

+ + + + +

+ BOOST_HEADER_DEPRECATED(A) +

+ + +

+ Defined in header <boost/config/header_deprecated.hpp>, + this macro issues the message "This header is deprecated. + Use A instead." + via BOOST_PRAGMA_MESSAGE. + A must be a string + literal. +

+

+ Example: BOOST_HEADER_DEPRECATED("<boost/config/workaround.hpp>") +

+

+ The messages issued by BOOST_HEADER_DEPRECATED + can be suppressed by defining the macro BOOST_ALLOW_DEPRECATED_HEADERS. +

+ +
diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 48edf26b..212c9fbc 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -302,7 +302,7 @@ one specific API (for example BOOST_HAS_NL_TYPES_H rather than BOOST_HAS_CATOPEN). If the macro describes a POSIX feature group, then add boilerplate code to - <boost/config/suffix.hpp> + <boost/config/detail/suffix.hpp> to auto-detect the feature where possible (if you are wondering why we can't use POSIX feature test macro directly, remember that many of these features can be added by third party libraries, and are not therefore identified inside @@ -333,15 +333,15 @@ as well.

- <boost/config/suffix.hpp> + <boost/config/detail/suffix.hpp> is always included so be careful about modifying this file as it breaks dependencies for everyone. This file should include only "boilerplate" configuration code, and generally should change only when new macros are added.

- <boost/config/select_compiler_config.hpp>, - <boost/config/select_platform_config.hpp> - and <boost/config/select_stdlib_config.hpp> + <boost/config/detail/select_compiler_config.hpp>, + <boost/config/detail/select_platform_config.hpp> + and <boost/config/detail/select_stdlib_config.hpp> are included by default and should change only if support for a new compiler/standard library/platform is added.

diff --git a/doc/html/index.html b/doc/html/index.html index 5ff77786..a43aa26e 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -72,6 +72,10 @@ that describe C++14 features not supported
Macros 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 @@ -753,7 +757,7 @@ user settable macros).

- Finally the boost configuration header, includes <boost/config/suffix.hpp>; + Finally the boost configuration header, includes <boost/config/detail/suffix.hpp>; this header contains any boiler plate configuration code - for example where one boost macro being set implies that another must be set also.

@@ -988,7 +992,7 @@ - +

Last revised: July 02, 2016 at 08:07:27 GMT

Last revised: April 18, 2018 at 18:30:02 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index b1d30e4a..f44340dd 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -138,7 +138,7 @@ The standard library lacks ``, `` or ``. [[`BOOST_NO_IS_ABSTRACT`][Compiler][ The C++ compiler does not support SFINAE with abstract types, this is covered by __CORE_LANGUAGE_DR337__, but is not part of the current standard. Fortunately -most compilers that support SFINAE also support this DR. +most compilers that support SFINAE also support this DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR ]] [[`BOOST_NO_LIMITS`][Standard library][ The C++ implementation does not provide the `` header. Never check for @@ -209,16 +209,20 @@ Pointers to members don't work when used as template parameters. The compiler misreads 8.5.1, treating classes as non-aggregate if they contain private or protected member functions. ]] +[[`BOOST_NO_RESTRICT_REFERENCES`][Compiler][ +Compiler-specific `restrict` keyword can not be applied to references. +]] [[`BOOST_NO_RTTI`][Compiler][ The compiler may (or may not) have the typeid operator, but RTTI on the dynamic type of an object is not supported. ]] [[`BOOST_NO_SFINAE`][Compiler][ The compiler does not support the "Substitution Failure Is Not An Error" -meta-programming idiom. +meta-programming idiom. This is the lightweight pre-C++11 version of SFINAE. ]] [[`BOOST_NO_SFINAE_EXPR`][Compiler][ -The compiler does not support usage of SFINAE with arbitrary expressions. +The compiler does not support usage of SFINAE with arbitrary expressions. This is the +post-C++11 SFINAE, but excludes a few specific corner cases, see also BOOST_NO_CXX11_SFINAE_EXPR. ]] [[`BOOST_NO_STD_ALLOCATOR`][Standard library][ The C++ standard library does not provide a standards conforming @@ -228,7 +232,8 @@ The C++ standard library does not provide a standards conforming The platform does not have a conforming version of `std::distance`. ]] [[`BOOST_NO_STD_ITERATOR`][Standard library][ -The C++ implementation fails to provide the `std::iterator` class. +The C++ implementation fails to provide the `std::iterator` class. +Note that post C++17, this macro is re-purposed to indicate that std::iterator has been removed or deprecated. ]] [[`BOOST_NO_STD_ITERATOR_TRAITS`][Standard library][ The compiler does not provide a standard compliant implementation of @@ -620,6 +625,9 @@ deleted (`= delete`) functions. [[`BOOST_NO_CXX11_DEFAULTED_FUNCTIONS`][The compiler does not support defaulted (`= default`) functions. ]] +[[`BOOST_NO_CXX11_DEFAULTED_MOVES`][The compiler does not support +defaulted move constructor or assignment. Other defaulted functions may still be supported. +]] [[`BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support explicit conversion operators (`explicit operator T()`). ]] @@ -676,6 +684,8 @@ compilers implementing an early draft of the C++11 standard (in particular, inco [[`BOOST_NO_CXX11_NUMERIC_LIMITS`][The standard library `` header does not support the C++11 version of `numeric_limits`. ]] +[[`BOOST_NO_CXX11_POINTER_TRAITS`][The standard library does not provide a +C++11 version of `std::pointer_traits` in .]] [[`BOOST_NO_CXX11_RANGE_BASED_FOR`][The compiler does not support range-based for statements. ]] @@ -692,6 +702,11 @@ r-value references. [[`BOOST_NO_CXX11_SCOPED_ENUMS`][The compiler does not support scoped enumerations (`enum class`). ]] +[[`BOOST_NO_CXX11_SFINAE_EXPR`][The compiler does not support +usage of C++11 SFINAE with arbitrary expressions. Use this macro only if you +are using all of the features of SFINAE including substitution-failure-on-private-member-access. +Otherwise use BOOST_NO_SFINAE_EXPR or BOOST_NO_SFINAE which get defined for fewer compilers. +]] [[`BOOST_NO_CXX11_SMART_PTR`][The standard library header has no shared_ptr and unique_ptr.]] [[`BOOST_NO_CXX11_STATIC_ASSERT`][The compiler does not support `static_assert`. @@ -901,6 +916,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]{ }`).]] @@ -926,12 +942,29 @@ 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_CXX17_ITERATOR_TRAITS`][The compiler does not support SFINAE-friendly `std::iterator_traits`.]] +[[`BOOST_NO_CXX17_IF_CONSTEXPR`][The compiler does not support `if constexpr`.]] +] + +[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] @@ -951,7 +984,7 @@ workarounds for compiler/standard library defects. This macro is used where a compiler specific workaround is required that is not otherwise described by one of the other Boost.Config macros. To use the macro you must first `` -#include +#include `` usage is then: `` @@ -973,7 +1006,7 @@ For example of `__BORLANDC__` /unless/ the macro `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined, in which case evaluates to `(__BORLANDC__ <= 0x590)`. -[*Note]: the ultimate source of documentation for this macro is in [@../../../../boost/detail/workaround.hpp boost/detail/workaround.hpp]. +[*Note]: the ultimate source of documentation for this macro is in [@../../../../boost/config/workaround.hpp boost/config/workaround.hpp]. ]] [[`BOOST_PREVENT_MACRO_SUBSTITUTION`][ Sometimes you have a function name with the same name as a C macro, for example "min" and "max" @@ -1067,8 +1100,11 @@ In either case this macro has no effect on runtime behavior and performance of code. ]] [[`BOOST_EXPLICIT_TEMPLATE_TYPE(t)` + `BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v)` + `BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)` + `BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)`][ Some compilers silently "fold" different function template instantiations if some of the template parameters don't appear in the function parameter list. @@ -1150,6 +1186,21 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally used to create a mangled name in combination with a predefined macro such a \_\_LINE__. ]] +[[`BOOST_RESTRICT`][ +This macro can be used in place of the compiler specific variant of the C99 `restrict` keyword to +notify the compiler that, for the lifetime of the qualified pointer variable, only it and its +derivative value will be used to gain access to the object it references. This limits the effect of +pointer aliasing and helps the optimizers in generating better code. However, i this condition is +violated, undefined behavior may occurs. + +Usage example: +`` + void perform_computation( float* BOOST_RESTRICT in, float* BOOST_RESTRICT out ) + { + *out = *in * 0.5f; + } +`` +]] [[`BOOST_FORCEINLINE`][ This macro can be used in place of the `inline` keyword to instruct the compiler that the function should always be inlined. @@ -1204,6 +1255,7 @@ If the compiler does not support this markup, `BOOST_NORETURN` is defined empty additional macro `BOOST_NO_NORETURN` is defined. ]] [[`BOOST_LIKELY(X)` + `BOOST_UNLIKELY(X)`][ These macros communicate to the compiler that the conditional expression `X` is likely or unlikely to yield a positive result. The expression should result in a boolean value. @@ -1220,6 +1272,35 @@ Usage example: ]] [[`BOOST_ATTRIBUTE_UNUSED`][Expands to `__attribute__((unused))` when this is available - can be used to disable compiler warnings relating to unused types or variables.]] +[[`BOOST_MAY_ALIAS`, `BOOST_NO_MAY_ALIAS`][ +`BOOST_MAY_ALIAS` expands to a type attribute that can be used to mark types that may +alias other types. Pointers or references to such marked types can be used to access objects +of other types. If the compiler supports this feature `BOOST_NO_MAY_ALIAS` is not defined. +Otherwise `BOOST_MAY_ALIAS` expands to nothing and `BOOST_NO_MAY_ALIAS` is defined. + +Usage example: +`` + struct BOOST_MAY_ALIAS aliasing_struct; + typedef unsigned int BOOST_MAY_ALIAS aliasing_uint; +`` +]] +[[`BOOST_PRAGMA_MESSAGE(M)`][Defined in header ``, +this macro expands to the equivalent of `#pragma message(M)`. `M` must be a string +literal. + +Example: `BOOST_PRAGMA_MESSAGE("This header is deprecated.")` + +The messages issued by `BOOST_PRAGMA_MESSAGE` can be suppressed by defining the macro +`BOOST_DISABLE_PRAGMA_MESSAGE`.]] + +[[`BOOST_HEADER_DEPRECATED(A)`][Defined in header ``, +this macro issues the message "This header is deprecated. Use `A` instead." via +`BOOST_PRAGMA_MESSAGE`. `A` must be a string literal. + +Example: `BOOST_HEADER_DEPRECATED("")` + +The messages issued by `BOOST_HEADER_DEPRECATED` can be suppressed by defining the macro +`BOOST_ALLOW_DEPRECATED_HEADERS`.]] ] [endsect] 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/auto_link.hpp b/include/boost/config/auto_link.hpp index 56a16b0b..271f8379 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -45,6 +45,7 @@ BOOST_LIB_PREFIX + BOOST_LIB_TOOLSET + BOOST_LIB_THREAD_OPT + BOOST_LIB_RT_OPT + + BOOST_LIB_ARCH_AND_MODEL_OPT "-" + BOOST_LIB_VERSION @@ -69,6 +70,9 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, p STLport build. n STLport build without its IOStreams. +BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model + (-x32 or -x64 for x86/32 and x86/64 respectively) + BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. @@ -161,10 +165,15 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc12: # define BOOST_LIB_TOOLSET "vc120" -# elif defined(BOOST_MSVC) +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1910) - // vc14: -# define BOOST_LIB_TOOLSET "vc140" + // vc14: +# define BOOST_LIB_TOOLSET "vc140" + +# elif defined(BOOST_MSVC) + + // vc14.1: +# define BOOST_LIB_TOOLSET "vc141" # elif defined(__BORLANDC__) @@ -356,6 +365,20 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #endif +// +// BOOST_LIB_ARCH_AND_MODEL_OPT +// + +#if defined( _M_IX86 ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x32" +#elif defined( _M_X64 ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x64" +#elif defined( _M_ARM ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a32" +#elif defined( _M_ARM64 ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a64" +#endif + // // select linkage opt: // @@ -375,6 +398,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_TOOLSET) \ && defined(BOOST_LIB_THREAD_OPT) \ && defined(BOOST_LIB_RT_OPT) \ + && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED @@ -388,14 +412,14 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") # endif #elif defined(BOOST_LIB_BUILDID) -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # endif #else -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # endif #endif @@ -426,6 +450,9 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_LIB_RT_OPT) # undef BOOST_LIB_RT_OPT #endif +#if defined(BOOST_LIB_ARCH_AND_MODEL_OPT) +# undef BOOST_LIB_ARCH_AND_MODEL_OPT +#endif #if defined(BOOST_LIB_LINK_OPT) # undef BOOST_LIB_LINK_OPT #endif diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 62494b88..beec9462 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -174,6 +174,7 @@ #define BOOST_NO_CXX11_CONSTEXPR #define BOOST_NO_CXX11_DECLTYPE_N3276 #define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DEFAULTED_MOVES #define BOOST_NO_CXX11_DELETED_FUNCTIONS #define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_CXX11_HDR_INITIALIZER_LIST @@ -185,6 +186,7 @@ #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported #define BOOST_NO_CXX11_VARIADIC_TEMPLATES @@ -227,6 +229,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + #if __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 150e3c0d..3d893c68 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -27,6 +27,10 @@ #define __has_attribute(x) 0 #endif +#ifndef __has_cpp_attribute +#define __has_cpp_attribute(x) 0 +#endif + #if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif @@ -57,7 +61,7 @@ #define BOOST_HAS_NRVO // Branch prediction hints -#if defined(__has_builtin) +#if !defined (__c2__) && defined(__has_builtin) #if __has_builtin(__builtin_expect) #define BOOST_LIKELY(x) __builtin_expect(x, 1) #define BOOST_UNLIKELY(x) __builtin_expect(x, 0) @@ -94,11 +98,15 @@ // // Dynamic shared object (DSO) and dynamic-link library (DLL) support // -#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__) +# define BOOST_HAS_DECLSPEC +# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__)) +# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__)) +#else # define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default"))) # define BOOST_SYMBOL_IMPORT -# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) #endif +#define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) // // The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through @@ -282,6 +290,24 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + +// Clang 3.9+ in c++1z +#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L +# define BOOST_NO_CXX17_INLINE_VARIABLES +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + +#if __cplusplus < 201103L +#define BOOST_NO_CXX11_SFINAE_EXPR +#endif + #if __cplusplus < 201400 // All versions with __cplusplus above this value seem to support this: # define BOOST_NO_CXX14_DIGIT_SEPARATORS @@ -292,9 +318,19 @@ #define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable(); #endif +#if (__clang_major__ == 3) && (__clang_minor__ == 0) +// Apparently a clang bug: +# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +#endif + // Clang has supported the 'unused' attribute since the first release. #define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__)) +// Type aliasing hint. +#if __has_attribute(__may_alias__) +# define BOOST_MAY_ALIAS __attribute__((__may_alias__)) +#endif + #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index c9a36aca..52531d2f 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -112,6 +112,7 @@ #define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_VARIADIC_TEMPLATES @@ -153,6 +154,23 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif + +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + // // TR1 macros: // diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index c09faeb0..88aba9ac 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -95,6 +95,7 @@ #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -137,6 +138,21 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + #ifdef c_plusplus // EDG has "long long" in non-strict mode // However, some libraries have insufficient "long long" support diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 837f8152..412ef9ef 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -1,67 +1,227 @@ -// (C) Copyright John Maddock 2011. -// (C) Copyright Cray, Inc. 2013 +// Copyright 2011 John Maddock +// Copyright 2013, 2017-2018 Cray, Inc. // 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 for most recent version. -// Greenhills C compiler setup: +// Cray C++ compiler setup. +// +// There are a few parameters that affect the macros defined in this file: +// +// - What version of CCE (Cray Compiling Environment) are we running? This +// comes from the '_RELEASE_MAJOR', '_RELEASE_MINOR', and +// '_RELEASE_PATCHLEVEL' macros. +// - What C++ standards conformance level are we using (e.g. '-h +// std=c++14')? This comes from the '__cplusplus' macro. +// - Are we using GCC extensions ('-h gnu' or '-h nognu')? If we have '-h +// gnu' then CCE emulates GCC, and the macros '__GNUC__', +// '__GNUC_MINOR__', and '__GNUC_PATCHLEVEL__' are defined. +// +// This file is organized as follows: +// +// - Verify that the combination of parameters listed above is supported. +// If we have an unsupported combination, we abort with '#error'. +// - Establish baseline values for all Boost macros. +// - Apply changes to the baseline macros based on compiler version. These +// changes are cummulative so each version section only describes the +// changes since the previous version. +// - Within each version section, we may also apply changes based on +// other parameters (i.e. C++ standards conformance level and GCC +// extensions). +// +// To test changes to this file: +// +// ``` +// module load cce/8.6.5 # Pick the version you want to test. +// cd boost/libs/config/test/all +// b2 -j 8 toolset=cray cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt +// ``` +// Note: Using 'cxxstd-dialect=iso' is not supported at this time (the +// tests run, but many tests fail). +// +// Note: 'linkflags=-lrt' is needed in Cray Linux Environment. Otherwise +// you get an 'undefined reference to clock_gettime' error. +// +// Note: If a test '*_fail.cpp' file compiles, but fails to run, then it is +// reported as a defect. However, this is not actually a defect. This is an +// area where the test system is somewhat broken. Tests that are failing +// because of this problem are noted in the comments. +// +// Pay attention to the macro definitions for the macros you wish to +// modify. For example, only macros categorized as compiler macros should +// appear in this file; platform macros should not appear in this file. +// Also, some macros have to be defined to specific values; it is not +// always enough to define or undefine a macro. +// +// Macro definitions are available in the source code at: +// +// `boost/libs/config/doc/html/boost_config/boost_macro_reference.html` +// +// Macro definitions are also available online at: +// +// http://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html +// +// Typically, if you enable a feature, and the tests pass, then you have +// nothing to worry about. However, it's sometimes hard to figure out if a +// disabled feature needs to stay disabled. To get a list of disabled +// features, run 'b2' in 'boost/libs/config/checks'. These are the macros +// you should pay attention to (in addition to macros that cause test +// failures). -#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) +//// +//// Front matter +//// -#if _RELEASE < 8 +// In a developer build of the Cray compiler (i.e. a compiler built by a +// Cray employee), the release patch level is reported as "x". This gives +// versions that look like e.g. "8.6.x". +// +// To accomplish this, the the Cray compiler preprocessor inserts: +// +// #define _RELEASE_PATCHLEVEL x +// +// If we are using a developer build of the compiler, we want to use the +// configuration macros for the most recent patch level of the release. To +// accomplish this, we'll pretend that _RELEASE_PATCHLEVEL is 99. +// +// However, it's difficult to detect if _RELEASE_PATCHLEVEL is x. We must +// consider that the x will be expanded if x is defined as a macro +// elsewhere. For example, imagine if someone put "-D x=3" on the command +// line, and _RELEASE_PATCHLEVEL is x. Then _RELEASE_PATCHLEVEL would +// expand to 3, and we could not distinguish it from an actual +// _RELEASE_PATCHLEVEL of 3. This problem only affects developer builds; in +// production builds, _RELEASE_PATCHLEVEL is always an integer. +// +// IMPORTANT: In developer builds, if x is defined as a macro, you will get +// an incorrect configuration. The behavior in this case is undefined. +// +// Even if x is not defined, we have to use some trickery to detect if +// _RELEASE_PATCHLEVEL is x. First we define BOOST_CRAY_x to some arbitrary +// magic value, 9867657. Then we use BOOST_CRAY_APPEND to append the +// expanded value of _RELEASE_PATCHLEVEL to the string "BOOST_CRAY_". +// +// - If _RELEASE_PATCHLEVEL is undefined, we get "BOOST_CRAY_". +// - If _RELEASE_PATCHLEVEL is 5, we get "BOOST_CRAY_5". +// - If _RELEASE_PATCHLEVEL is x (and x is not defined) we get +// "BOOST_CRAY_x": +// +// Then we check if BOOST_CRAY_x is equal to the output of +// BOOST_CRAY_APPEND. In other words, the output of BOOST_CRAY_APPEND is +// treated as a macro name, and expanded again. If we can safely assume +// that BOOST_CRAY_ is not a macro defined as our magic number, and +// BOOST_CRAY_5 is not a macro defined as our magic number, then the only +// way the equality test can pass is if _RELEASE_PATCHLEVEL expands to x. +// +// So, that is how we detect if we are using a developer build of the Cray +// compiler. + +#define BOOST_CRAY_x 9867657 // Arbitrary number +#define BOOST_CRAY_APPEND(MACRO) BOOST_CRAY_APPEND_INTERNAL(MACRO) +#define BOOST_CRAY_APPEND_INTERNAL(MACRO) BOOST_CRAY_##MACRO + +#if BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL) + + // This is a developer build. + // + // - _RELEASE_PATCHLEVEL is defined as x, and x is not defined as a macro. + + // Pretend _RELEASE_PATCHLEVEL is 99, so we get the configuration for the + // most recent patch level in this release. + + #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + 99) + +#else + + // This is a production build. + // + // _RELEASE_PATCHLEVEL is not defined as x, or x is defined as a macro. + + #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL) + +#endif // BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL) + +#undef BOOST_CRAY_APPEND_INTERNAL +#undef BOOST_CRAY_APPEND +#undef BOOST_CRAY_x + + +#ifdef __GNUC__ +# define BOOST_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL) +#endif + +// Since the Cray compiler defines '__GNUC__', we have to emulate some +// additional GCC macros in order to make everything work. +// +// FIXME: Perhaps Cray should fix the compiler to define these additional +// macros for GCC emulation? + +#if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define __GXX_EXPERIMENTAL_CXX0X__ 1 +#endif + +//// +//// Parameter validation +//// + +// FIXME: Do we really need to support compilers before 8.5? Do they pass +// the Boost.Config tests? + +#if BOOST_CRAY_VERSION < 80000 # error "Boost is not configured for Cray compilers prior to version 8, please try the configure script." #endif -// -// Check this is a recent EDG based compiler, otherwise we don't support it here: -// -#ifndef __EDG_VERSION__ +// We only support recent EDG based compilers. + +#ifndef __EDG__ # error "Unsupported Cray compiler, please try running the configure script." #endif +//// +//// Baseline values +//// + #include - -// -// -#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_HAS_NRVO +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -#define BOOST_HAS_NRVO -#define BOOST_NO_CXX11_VARIADIC_MACROS -#define BOOST_NO_CXX11_VARIADIC_TEMPLATES -#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX -#define BOOST_NO_CXX11_UNICODE_LITERALS -#define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#define BOOST_HAS_NRVO -#define BOOST_NO_CXX11_TEMPLATE_ALIASES -#define BOOST_NO_CXX11_STATIC_ASSERT -#define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_CXX11_SCOPED_ENUMS -#define BOOST_NO_CXX11_RVALUE_REFERENCES -#define BOOST_NO_CXX11_RANGE_BASED_FOR -#define BOOST_NO_CXX11_RAW_LITERALS -#define BOOST_NO_CXX11_NULLPTR -#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_CHAR16_T +#define BOOST_NO_CXX11_CHAR32_T +#define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DECLTYPE +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#define BOOST_NO_CXX11_DELETED_FUNCTIONS +#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_CXX11_LAMBDAS #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS -#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_CXX11_DELETED_FUNCTIONS -#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#define BOOST_NO_CXX11_DECLTYPE_N3276 -#define BOOST_NO_CXX11_DECLTYPE -#define BOOST_NO_CXX11_CONSTEXPR -#define BOOST_NO_CXX11_USER_DEFINED_LITERALS -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -#define BOOST_NO_CXX11_CHAR32_T -#define BOOST_NO_CXX11_CHAR16_T +#define BOOST_NO_CXX11_NOEXCEPT +#define BOOST_NO_CXX11_NULLPTR +#define BOOST_NO_CXX11_RANGE_BASED_FOR +#define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_REF_QUALIFIERS -#define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_RVALUE_REFERENCES +#define BOOST_NO_CXX11_SCOPED_ENUMS +#define BOOST_NO_CXX11_SFINAE_EXPR +#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_THREAD_LOCAL - +#define BOOST_NO_CXX11_UNICODE_LITERALS +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_VARIADIC_MACROS +#define BOOST_NO_CXX11_VARIADIC_TEMPLATES +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG #define BOOST_MATH_DISABLE_STD_FPCLASSIFY @@ -70,15 +230,15 @@ #define BOOST_SP_USE_PTHREADS #define BOOST_AC_USE_PTHREADS -/* everything that follows is working around what are thought to be - * compiler shortcomings. Revist all of these regularly. - */ +// +// Everything that follows is working around what are thought to be +// compiler shortcomings. Revist all of these regularly. +// //#define BOOST_USE_ENUM_STATIC_ASSERT //#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS //(this may be implied by the previous #define -// These constants should be provided by the -// compiler, at least when -hgnu is asserted on the command line. +// These constants should be provided by the compiler. #ifndef __ATOMIC_RELAXED #define __ATOMIC_RELAXED 0 @@ -89,5 +249,192 @@ #define __ATOMIC_SEQ_CST 5 #endif +//// +//// Version changes +//// +// +// 8.5.0 +// +#if BOOST_CRAY_VERSION >= 80500 + +#if __cplusplus >= 201103L + +#undef BOOST_HAS_NRVO +#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#undef BOOST_NO_CXX11_AUTO_DECLARATIONS +#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#undef BOOST_NO_CXX11_CHAR16_T +#undef BOOST_NO_CXX11_CHAR32_T +#undef BOOST_NO_CXX11_CONSTEXPR +#undef BOOST_NO_CXX11_DECLTYPE +#undef BOOST_NO_CXX11_DECLTYPE_N3276 +#undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#undef BOOST_NO_CXX11_DELETED_FUNCTIONS +#undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#undef BOOST_NO_CXX11_FINAL +#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#undef BOOST_NO_CXX11_LAMBDAS +#undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#undef BOOST_NO_CXX11_NOEXCEPT +#undef BOOST_NO_CXX11_NULLPTR +#undef BOOST_NO_CXX11_RANGE_BASED_FOR +#undef BOOST_NO_CXX11_RAW_LITERALS +#undef BOOST_NO_CXX11_REF_QUALIFIERS +#undef BOOST_NO_CXX11_RVALUE_REFERENCES +#undef BOOST_NO_CXX11_SCOPED_ENUMS +#undef BOOST_NO_CXX11_SFINAE_EXPR +#undef BOOST_NO_CXX11_STATIC_ASSERT +#undef BOOST_NO_CXX11_TEMPLATE_ALIASES +#undef BOOST_NO_CXX11_THREAD_LOCAL +#undef BOOST_NO_CXX11_UNICODE_LITERALS +#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#undef BOOST_NO_CXX11_USER_DEFINED_LITERALS +#undef BOOST_NO_CXX11_VARIADIC_MACROS +#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES +#undef BOOST_NO_SFINAE_EXPR +#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#undef BOOST_MATH_DISABLE_STD_FPCLASSIFY +#undef BOOST_SP_USE_PTHREADS +#undef BOOST_AC_USE_PTHREADS + +#define BOOST_HAS_VARIADIC_TMPL +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +#define BOOST_HAS_TR1_COMPLEX_OVERLOADS +#define BOOST_HAS_STDINT_H +#define BOOST_HAS_STATIC_ASSERT +#define BOOST_HAS_SIGACTION +#define BOOST_HAS_SCHED_YIELD +#define BOOST_HAS_RVALUE_REFS +#define BOOST_HAS_PTHREADS +#define BOOST_HAS_PTHREAD_YIELD +#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#define BOOST_HAS_PARTIAL_STD_ALLOCATOR +#define BOOST_HAS_NRVO +#define BOOST_HAS_NL_TYPES_H +#define BOOST_HAS_NANOSLEEP +#define BOOST_NO_CXX11_SMART_PTR +#define BOOST_NO_CXX11_HDR_FUNCTIONAL +#define BOOST_NO_CXX14_CONSTEXPR +#define BOOST_HAS_LONG_LONG +#define BOOST_HAS_FLOAT128 + +#if __cplusplus < 201402L +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#endif // __cplusplus < 201402L + +#endif // __cplusplus >= 201103L + +#endif // BOOST_CRAY_VERSION >= 80500 + +// +// 8.6.4 +// (versions prior to 8.6.5 do not define _RELEASE_PATCHLEVEL) +// + +#if BOOST_CRAY_VERSION >= 80600 + +#if __cplusplus >= 199711L +#define BOOST_HAS_FLOAT128 +#define BOOST_HAS_PTHREAD_YIELD // This is a platform macro, but it improves test results. +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. +#undef BOOST_NO_CXX11_CHAR16_T +#undef BOOST_NO_CXX11_CHAR32_T +#undef BOOST_NO_CXX11_INLINE_NAMESPACES +#undef BOOST_NO_CXX11_FINAL +#undef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS +#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_CXX11_SFINAE_EXPR // This is correct, even though '*_fail.cpp' test fails. +#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#undef BOOST_NO_CXX11_VARIADIC_MACROS +#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES +// 'BOOST_NO_DEDUCED_TYPENAME' test is broken. The test files are enabled / +// disabled with an '#ifdef BOOST_DEDUCED_TYPENAME'. However, +// 'boost/libs/config/include/boost/config/detail/suffix.hpp' ensures that +// 'BOOST_DEDUCED_TYPENAME' is always defined (the value it is defined as +// depends on 'BOOST_NO_DEDUCED_TYPENAME'). So, modifying +// 'BOOST_NO_DEDUCED_TYPENAME' has no effect on which tests are run. +// +// The 'no_ded_typename_pass.cpp' test should always compile and run +// successfully, because 'BOOST_DEDUCED_TYPENAME' must always have an +// appropriate value (it's not just something that you turn on or off). +// Therefore, if you wish to test changes to 'BOOST_NO_DEDUCED_TYPENAME', +// you have to modify 'no_ded_typename_pass.cpp' to unconditionally include +// 'boost_no_ded_typename.ipp'. +#undef BOOST_NO_DEDUCED_TYPENAME // This is correct. Test is broken. +#undef BOOST_NO_SFINAE_EXPR +#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif // __cplusplus >= 199711L + +#if __cplusplus >= 201103L +#undef BOOST_NO_CXX11_ALIGNAS +#undef BOOST_NO_CXX11_DECLTYPE_N3276 +#define BOOST_NO_CXX11_HDR_ATOMIC +#undef BOOST_NO_CXX11_HDR_FUNCTIONAL +#define BOOST_NO_CXX11_HDR_REGEX // This is correct. Test compiles, but fails to run. +#undef BOOST_NO_CXX11_SFINAE_EXPR +#undef BOOST_NO_CXX11_SMART_PTR +#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L +#undef BOOST_NO_CXX14_CONSTEXPR +#define BOOST_NO_CXX14_DIGIT_SEPARATORS +#endif // __cplusplus == 201402L + +#endif // BOOST_CRAY_VERSION >= 80600 + +// +// 8.6.5 +// (no change from 8.6.4) +// + +// +// 8.7.0 +// + +#if BOOST_CRAY_VERSION >= 80700 + +#if __cplusplus >= 199711L +#endif // __cplusplus >= 199711L + +#if __cplusplus >= 201103L +#undef BOOST_NO_CXX11_HDR_ATOMIC +#undef BOOST_NO_CXX11_HDR_REGEX +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L +#endif // __cplusplus == 201402L + +#endif // BOOST_CRAY_VERSION >= 80700 + +// +// Next release +// + +#if BOOST_CRAY_VERSION > 80799 + +#if __cplusplus >= 199711L +#endif // __cplusplus >= 199711L + +#if __cplusplus >= 201103L +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L +#endif // __cplusplus == 201402L + +#endif // BOOST_CRAY_VERSION > 80799 + +//// +//// Remove temporary macros +//// + +// I've commented out some '#undef' statements to signify that we purposely +// want to keep certain macros. + +//#undef __GXX_EXPERIMENTAL_CXX0X__ +//#undef BOOST_COMPILER +#undef BOOST_GCC_VERSION +#undef BOOST_CRAY_VERSION diff --git a/include/boost/config/compiler/diab.hpp b/include/boost/config/compiler/diab.hpp new file mode 100644 index 00000000..943db83f --- /dev/null +++ b/include/boost/config/compiler/diab.hpp @@ -0,0 +1,26 @@ +// (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_NO_TWO_PHASE_NAME_LOOKUP +#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS + +#define BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE +#define BOOST_LOG_NO_MEMBER_TEMPLATE_FRIENDS +#define BOOST_REGEX_NO_EXTERNAL_TEMPLATES + +#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#define BOOST_NO_CXX11_HDR_CODECVT +#define BOOST_NO_CXX11_NUMERIC_LIMITS + +#define BOOST_COMPILER "Wind River Diab " BOOST_STRINGIZE(__VERSION_NUMBER__) diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 61d1d199..14663731 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -71,6 +71,7 @@ #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -113,6 +114,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + #if (__DMC__ <= 0x840) #error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 42fccdd3..8cba52d6 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -99,10 +99,10 @@ // Dynamic shared object (DSO) and dynamic-link library (DLL) support // #if __GNUC__ >= 4 -# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) +# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__) // All Win32 development environments, including 64-bit Windows and MinGW, define // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, - // so does not define _WIN32 or its variants. + // so does not define _WIN32 or its variants, but still supports dllexport/dllimport. # define BOOST_HAS_DECLSPEC # define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__)) # define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__)) @@ -233,6 +233,7 @@ // #if (BOOST_GCC_VERSION < 40600) || !defined(BOOST_GCC_CXX11) #define BOOST_NO_CXX11_CONSTEXPR +#define BOOST_NO_CXX11_DEFAULTED_MOVES #define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_NULLPTR #define BOOST_NO_CXX11_RANGE_BASED_FOR @@ -253,6 +254,7 @@ #if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11) # define BOOST_NO_CXX11_ALIGNAS # define BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_SFINAE_EXPR #endif // C++0x features in 4.8.1 and later @@ -283,15 +285,44 @@ #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) # define BOOST_NO_CXX14_CONSTEXPR #endif -#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) +#if (BOOST_GCC_VERSION < 50200) || !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + +#if __GNUC__ >= 7 +# define BOOST_FALLTHROUGH __attribute__((fallthrough)) +#endif + +#ifdef __MINGW32__ +// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see +// https://sourceforge.net/p/mingw-w64/bugs/527/ +// Not setting this causes program termination on thread exit. +#define BOOST_NO_CXX11_THREAD_LOCAL +#endif + // // Unused attribute: #if __GNUC__ >= 4 # define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__)) #endif + +// Type aliasing hint. Supported since gcc 3.3. +#define BOOST_MAY_ALIAS __attribute__((__may_alias__)) + // // __builtin_unreachable: #if BOOST_GCC_VERSION >= 40800 @@ -315,10 +346,10 @@ # error "Compiler not configured - please reconfigure" #endif // -// last known and checked version is 4.9: -#if (BOOST_GCC_VERSION > 40900) +// last known and checked version is 7.1: +#if (BOOST_GCC_VERSION > 70100) # if defined(BOOST_ASSERT_CONFIG) -# error "boost: Unknown compiler version - please run the configure tests and report the results" +# error "Boost.Config is older than your compiler - please check for an updated Boost release." # else // we don't emit warnings here anymore since there are no defect macros defined for // gcc post 3.4, so any failures are gcc regressions... diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index b56c7862..bdba4ed0 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -46,6 +46,7 @@ # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_CXX11_SFINAE_EXPR # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_LAMBDAS # define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS @@ -91,6 +92,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index 939dc90f..49d676fa 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -114,6 +114,7 @@ #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index cbad6b49..e5fec7b7 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -35,15 +35,25 @@ #endif -#else +#if (__INTEL_COMPILER <= 1600) && !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) +# define BOOST_NO_CXX14_VARIABLE_TEMPLATES +#endif + +#else // defined(_MSC_VER) #include #undef BOOST_GCC_VERSION #undef BOOST_GCC_CXX11 +#undef BOOST_GCC +// Broken in all versions up to 17 (newer versions not tested) +#if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR) +# define BOOST_NO_CXX14_CONSTEXPR #endif +#endif // defined(_MSC_VER) + #undef BOOST_COMPILER #if defined(__INTEL_COMPILER) @@ -88,7 +98,7 @@ # define BOOST_INTEL_LINUX BOOST_INTEL #endif -#else +#else // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__)) #include @@ -302,6 +312,12 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_SYMBOL_IMPORT # define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) #endif + +// Type aliasing hint +#if defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1300) +# define BOOST_MAY_ALIAS __attribute__((__may_alias__)) +#endif + // // C++0x features // For each feature we need to check both the Intel compiler version, @@ -406,6 +422,11 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_SFINAE_EXPR #endif +// BOOST_NO_CXX11_SFINAE_EXPR +#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && !defined(_MSC_VER) +# undef BOOST_NO_CXX11_SFINAE_EXPR +#endif + // BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827)) // This is available in earlier Intel releases, but breaks Multiprecision: @@ -479,7 +500,7 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_CXX11_FINAL #endif -#endif +#endif // defined(BOOST_INTEL_STDCXX0X) // // Broken in all versions up to 15: @@ -526,12 +547,12 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_HAS_INT128 #endif -#endif +#endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__)) // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1500) +#if (BOOST_INTEL_CXX_VERSION > 1700) # if defined(BOOST_ASSERT_CONFIG) -# error "boost: Unknown compiler version - please run the configure tests and report the results" +# error "Boost.Config is older than your compiler - please check for an updated Boost release." # elif defined(_MSC_VER) // // We don't emit this warning any more, since we have so few diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index fc501d9f..0e18e180 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -113,6 +113,7 @@ #define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -156,6 +157,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) // diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 8c801df6..05c066ef 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -62,6 +62,7 @@ #define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -105,6 +106,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + // // versions check: // we don't support MPW prior to version 8.9: diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index b31d4f4f..ed035fcf 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -11,6 +11,13 @@ # define BOOST_COMPILER "NVIDIA CUDA C++ Compiler" #endif +#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__) +# define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__) +#else +// We don't really know what the CUDA version is, but it's definitely before 7.5: +# define BOOST_CUDA_VERSION 7000000 +#endif + // NVIDIA Specific support // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device #define BOOST_GPU_ENABLED __host__ __device__ @@ -19,14 +26,33 @@ // https://svn.boost.org/trac/boost/ticket/11897 // This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance // check is enough to detect versions < 7.5 -#if !defined(__CUDACC_VER__) || (__CUDACC_VER__ < 70500) +#if BOOST_CUDA_VERSION < 7050000 # define BOOST_NO_CXX11_VARIADIC_TEMPLATES #endif // The same bug is back again in 8.0: -#if (__CUDACC_VER__ > 80000) && (__CUDACC_VER__ < 80100) +#if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000) # define BOOST_NO_CXX11_VARIADIC_TEMPLATES #endif -// Most recent CUDA (8.0) has no constexpr support in msvc mode: -#if defined(_MSC_VER) +// CUDA (8.0) has no constexpr support in msvc mode: +#if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000) # define BOOST_NO_CXX11_CONSTEXPR #endif + +#ifdef __CUDACC__ +// +// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc: +// +#if defined(_MSC_VER) +# define BOOST_NO_CXX14_DIGIT_SEPARATORS +# define BOOST_NO_CXX11_UNICODE_LITERALS +#endif +// +// And this one effects the NVCC front end, +// See https://svn.boost.org/trac/boost/ticket/13049 +// +#if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000) +# define BOOST_NO_CXX11_NOEXCEPT +#endif + +#endif + diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index a5e65af4..1318d275 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 @@ -37,6 +42,7 @@ # define BOOST_NO_CXX11_TEMPLATE_ALIASES # define BOOST_NO_CXX11_STATIC_ASSERT # define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_CXX11_SFINAE_EXPR # define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_RVALUE_REFERENCES # define BOOST_NO_CXX11_RANGE_BASED_FOR @@ -112,4 +118,18 @@ #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif + +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif #endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index fa2d5e40..4e909d8a 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -1,4 +1,5 @@ // (C) Copyright Noel Belcourt 2007. +// Copyright 2017, NVIDIA CORPORATION. // 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,147 +11,13 @@ #define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__ #define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) -// -// Threading support: -// Turn this on unconditionally here, it will get turned off again later -// if no threading API is detected. -// +// PGI is mostly GNU compatible. So start with that. +#include -#if __PGIC__ >= 11 +// Now adjust for things that are different. -// options requested by configure --enable-test -#define BOOST_HAS_PTHREADS -#define BOOST_HAS_THREADS -#define BOOST_HAS_PTHREAD_YIELD -#define BOOST_HAS_NRVO -#define BOOST_HAS_LONG_LONG - -// options --enable-test wants undefined -#undef BOOST_NO_STDC_NAMESPACE -#undef BOOST_NO_EXCEPTION_STD_NAMESPACE -#undef BOOST_DEDUCED_TYPENAME - -#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -#define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CXX11_AUTO_DECLARATIONS - -#elif __PGIC__ >= 10 - -// options requested by configure --enable-test -#define BOOST_HAS_THREADS -#define BOOST_HAS_NRVO -#define BOOST_HAS_LONG_LONG -#if defined(linux) || defined(__linux) || defined(__linux__) -# define BOOST_HAS_STDINT_H -#endif - -// options --enable-test wants undefined -#undef BOOST_NO_STDC_NAMESPACE -#undef BOOST_NO_EXCEPTION_STD_NAMESPACE -#undef BOOST_DEDUCED_TYPENAME - -#elif __PGIC__ >= 7 - -#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -#define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#define BOOST_NO_SWPRINTF -#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CXX11_AUTO_DECLARATIONS - -#else - -# error "Pgi compiler not configured - please reconfigure" - -#endif -// -// C++0x features -// -// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG -// -#define BOOST_NO_CXX11_CHAR16_T -#define BOOST_NO_CXX11_CHAR32_T -#define BOOST_NO_CXX11_CONSTEXPR -#define BOOST_NO_CXX11_DECLTYPE -#define BOOST_NO_CXX11_DECLTYPE_N3276 -#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#define BOOST_NO_CXX11_DELETED_FUNCTIONS -#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_CXX11_EXTERN_TEMPLATE -#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_CXX11_LAMBDAS -#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS -#define BOOST_NO_CXX11_NOEXCEPT -#define BOOST_NO_CXX11_NULLPTR -#define BOOST_NO_CXX11_NUMERIC_LIMITS -#define BOOST_NO_CXX11_RANGE_BASED_FOR -#define BOOST_NO_CXX11_RAW_LITERALS -#define BOOST_NO_CXX11_RVALUE_REFERENCES -#define BOOST_NO_CXX11_SCOPED_ENUMS -#define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_CXX11_STATIC_ASSERT -#define BOOST_NO_SWPRINTF -#define BOOST_NO_CXX11_TEMPLATE_ALIASES -#define BOOST_NO_CXX11_UNICODE_LITERALS -#define BOOST_NO_CXX11_VARIADIC_TEMPLATES -#define BOOST_NO_CXX11_VARIADIC_MACROS -#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX - -#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_TYPE_TRAITS -#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_INITIALIZER_LIST -#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_ARRAY -#define BOOST_NO_CXX11_USER_DEFINED_LITERALS -#define BOOST_NO_CXX11_ALIGNAS -#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES -#define BOOST_NO_CXX11_INLINE_NAMESPACES -#define BOOST_NO_CXX11_REF_QUALIFIERS -#define BOOST_NO_CXX11_FINAL -#define BOOST_NO_CXX11_THREAD_LOCAL - -// C++ 14: -#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) -# define BOOST_NO_CXX14_AGGREGATE_NSDMI -#endif -#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304) -# define BOOST_NO_CXX14_BINARY_LITERALS -#endif -#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) -# define BOOST_NO_CXX14_CONSTEXPR -#endif -#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) -# define BOOST_NO_CXX14_DECLTYPE_AUTO -#endif -#if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATORS -#endif -#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) -# define BOOST_NO_CXX14_GENERIC_LAMBDAS -#endif -#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) -# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES -#endif -#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) -# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION -#endif -#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) -# define BOOST_NO_CXX14_VARIABLE_TEMPLATES -#endif -// -// version check: -// probably nothing to do here? +// __float128 is a typedef, not a distinct type. +#undef BOOST_HAS_FLOAT128 +// __int128 is not supported. +#undef BOOST_HAS_INT128 diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index c3a06292..41b7bcad 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -141,6 +141,7 @@ // # define BOOST_HAS_LONG_LONG +#define BOOST_NO_CXX11_SFINAE_EXPR // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) @@ -152,7 +153,7 @@ #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) # define BOOST_NO_CXX14_CONSTEXPR #endif -#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) +#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) || (__cplusplus < 201402L) # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... @@ -171,6 +172,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + // Turn on threading support for Solaris 12. // Ticket #11972 #if (__SUNPRO_CC >= 0x5140) && defined(__SunOS_5_12) && !defined(BOOST_HAS_THREADS) @@ -190,9 +205,9 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 0x590: -#if (__SUNPRO_CC > 0x590) +// last known and checked version: +#if (__SUNPRO_CC > 0x5150) # if defined(BOOST_ASSERT_CONFIG) -# error "boost: Unknown compiler version - please run the configure tests and report the results" +# error "Boost.Config is older than your compiler - please check for an updated Boost release." # endif #endif diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 233c8353..8e264499 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -65,6 +65,11 @@ #define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS #endif +// Type aliasing hint. Supported since XL C++ 13.1 +#if (__IBMCPP__ >= 1310) +# define BOOST_MAY_ALIAS __attribute__((__may_alias__)) +#endif + // // C++0x features // @@ -114,6 +119,7 @@ # define BOOST_NO_CXX11_SCOPED_ENUMS #endif #define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #if ! __IBMCPP_STATIC_ASSERT # define BOOST_NO_CXX11_STATIC_ASSERT @@ -161,3 +167,17 @@ #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif + +// C++17 +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif +#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index adbf1b81..2110f851 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 @@ -167,6 +167,7 @@ // #if (_MSC_FULL_VER < 190023026) # define BOOST_NO_CXX11_NOEXCEPT +# define BOOST_NO_CXX11_DEFAULTED_MOVES # define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_ALIGNAS @@ -190,6 +191,19 @@ # define BOOST_NO_CXX11_CONSTEXPR #endif +// C++14 features supported by VC++ 14.1 (Visual Studio 2017) +// +#if (_MSC_VER < 1910) +# define BOOST_NO_CXX14_AGGREGATE_NSDMI +#endif + +// C++17 features supported by VC++ 14.1 (Visual Studio 2017) Update 3 +// +#if (_MSC_VER < 1911) || (_MSVC_LANG < 201703) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + // MSVC including version 14 has not yet completely // implemented value-initialization, as is reported: // "VC++ does not value-initialize members of derived classes without @@ -205,18 +219,48 @@ // https://connect.microsoft.com/VisualStudio/feedback/details/1582233/c-subobjects-still-not-value-initialized-correctly // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues // (Niels Dekker, LKEB, May 2010) +// Still present in VC15.5, Dec 2017. #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // // C++ 11: // -#define BOOST_NO_TWO_PHASE_NAME_LOOKUP +// This is supported with /permissive- for 15.5 onwards, unfortunately we appear to have no way to tell +// if this is in effect or not, in any case nothing in Boost is currently using this, so we'll just go +// on defining it for now: // -// C++ 14: -#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) -# define BOOST_NO_CXX14_AGGREGATE_NSDMI +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP + +#if (_MSC_VER < 1912) || (_MSVC_LANG < 201402) +// Supported from msvc-15.5 onwards: +#define BOOST_NO_CXX11_SFINAE_EXPR #endif -#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) +// C++ 14: +// Still gives internal compiler error for msvc-15.5: # define BOOST_NO_CXX14_CONSTEXPR +// C++ 17: +#if (_MSC_VER < 1912) || (_MSVC_LANG < 201703) +#define BOOST_NO_CXX17_INLINE_VARIABLES +#define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + +// +// Things that don't work in clr mode: +// +#ifdef _M_CEE +#ifndef BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif +#ifndef BOOST_NO_SFINAE_EXPR +# define BOOST_NO_SFINAE_EXPR +#endif +#ifndef BOOST_NO_CXX11_REF_QUALIFIERS +# define BOOST_NO_CXX11_REF_QUALIFIERS +#endif +#endif +#ifdef _M_CEE_PURE +#ifndef BOOST_NO_CXX11_CONSTEXPR +# define BOOST_NO_CXX11_CONSTEXPR +#endif #endif // @@ -264,7 +308,7 @@ # endif # endif # else -# if _MSC_VER < 1310 +# if _MSC_VER < 1200 // Note: Versions up to 7.0 aren't supported. # define BOOST_COMPILER_VERSION 5.0 # elif _MSC_VER < 1300 @@ -283,8 +327,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 @@ -293,12 +339,17 @@ # define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) #endif +#include + // -// last known and checked version is 19.00.23026 (VC++ 2015 RTM): -#if (_MSC_VER > 1900) +// last known and checked version is 19.12.25830.2 (VC++ 2017.3): +#if (_MSC_VER > 1912) # if defined(BOOST_ASSERT_CONFIG) -# error "boost: Unknown compiler version - please run the configure tests and report the results" -# else -# pragma message("boost: Unknown compiler version - please run the configure tests and report the results") +# error "Boost.Config is older than your current compiler version." +# elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) + // + // Disabled as of March 2018 - the pace of VS releases is hard to keep up with + // and in any case, we have relatively few defect macros defined now. + // BOOST_PRAGMA_MESSAGE("Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an updated Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message.") # endif #endif diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index 2aaafc3b..ee7aa125 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -23,6 +23,10 @@ #define __has_extension __has_feature #endif +#ifndef __has_cpp_attribute +#define __has_cpp_attribute(x) 0 +#endif + #if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif @@ -238,6 +242,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + +#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) +# define BOOST_NO_CXX17_IF_CONSTEXPR +#endif + +// Clang 3.9+ in c++1z +#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L +# define BOOST_NO_CXX17_INLINE_VARIABLES +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + #if !__has_feature(cxx_thread_local) # define BOOST_NO_CXX11_THREAD_LOCAL #endif @@ -253,6 +271,11 @@ # define BOOST_ATTRIBUTE_UNUSED __attribute__((unused)) #endif +// Type aliasing hint. +#if __has_attribute(__may_alias__) +# define BOOST_MAY_ALIAS __attribute__((__may_alias__)) +#endif + #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ #endif diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp new file mode 100644 index 00000000..eb1bf2e9 --- /dev/null +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -0,0 +1,170 @@ +// 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 +#define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#define BOOST_NO_CXX17_INLINE_VARIABLES +#define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#define BOOST_NO_CXX17_IF_CONSTEXPR + +// ------------------------------------- + +#if defined(__IBM_ATTRIBUTES) +# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__)) +# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# define BOOST_MAY_ALIAS __attribute__((__may_alias__)) +// No BOOST_ALIGNMENT - explicit alignment support is broken (V2R1). +#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/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 92% rename from include/boost/config/select_compiler_config.hpp rename to include/boost/config/detail/select_compiler_config.hpp index 7a757084..ced8443d 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/detail/select_compiler_config.hpp @@ -48,6 +48,14 @@ // 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(__PGI) +// Portland Group Inc. +# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp" + # elif defined(__GNUC__) && !defined(__ibmxl__) // GNU C++: # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp" @@ -92,18 +100,18 @@ // 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__) // IBM Visual Age or IBM XL C/C++ for Linux (Big Endian) # define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" -#elif defined(__PGI) -// Portland Group Inc. -# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp" - #elif defined _MSC_VER // Microsoft Visual C++ // @@ -140,6 +148,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/detail/select_platform_config.hpp similarity index 94% rename from include/boost/config/select_platform_config.hpp rename to include/boost/config/detail/select_platform_config.hpp index 62fd818b..b36eca57 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/detail/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__) @@ -97,7 +101,7 @@ # define BOOST_HAS_UNISTD_H # endif -# include +# include # endif @@ -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" @@ -129,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 94% rename from include/boost/config/select_stdlib_config.hpp rename to include/boost/config/detail/select_stdlib_config.hpp index e270a881..8db778c8 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/detail/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/suffix.hpp b/include/boost/config/detail/suffix.hpp similarity index 95% rename from include/boost/config/suffix.hpp rename to include/boost/config/detail/suffix.hpp index eeaec2bf..22d31f68 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -537,25 +537,10 @@ namespace std{ using ::type_info; } // ---------------------------------------------------------------------------// -// // Helper macro BOOST_STRINGIZE: -// Converts the parameter X to a string after macro replacement -// on X has been performed. -// -#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) -#define BOOST_DO_STRINGIZE(X) #X - -// // Helper macro BOOST_JOIN: -// The following piece of macro magic joins the two -// arguments together, even when one of the arguments is -// itself a macro (see 16.3.1 in C++ standard). The key -// is that macro expansion of macro arguments does not -// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN. -// -#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y ) -#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y) -#define BOOST_DO_JOIN2( X, Y ) X##Y + +#include // // Set some default values for compiler/library/platform names. @@ -583,6 +568,33 @@ namespace std{ using ::type_info; } # define BOOST_GPU_ENABLED # endif +// BOOST_RESTRICT ---------------------------------------------// +// Macro to use in place of 'restrict' keyword variants +#if !defined(BOOST_RESTRICT) +# if defined(_MSC_VER) +# define BOOST_RESTRICT __restrict +# if !defined(BOOST_NO_RESTRICT_REFERENCES) && (_MSC_FULL_VER < 190023026) +# define BOOST_NO_RESTRICT_REFERENCES +# endif +# elif defined(__GNUC__) && __GNUC__ > 3 + // Clang also defines __GNUC__ (as 4) +# define BOOST_RESTRICT __restrict__ +# else +# define BOOST_RESTRICT +# if !defined(BOOST_NO_RESTRICT_REFERENCES) +# define BOOST_NO_RESTRICT_REFERENCES +# endif +# endif +#endif + +// BOOST_MAY_ALIAS -----------------------------------------------// +// The macro expands to an attribute to mark a type that is allowed to alias other types. +// The macro is defined in the compiler-specific headers. +#if !defined(BOOST_MAY_ALIAS) +# define BOOST_NO_MAY_ALIAS +# define BOOST_MAY_ALIAS +#endif + // BOOST_FORCEINLINE ---------------------------------------------// // Macro to use in place of 'inline' to force a function to be inline #if !defined(BOOST_FORCEINLINE) @@ -604,7 +616,7 @@ namespace std{ using ::type_info; } # elif defined(__GNUC__) && __GNUC__ > 3 // Clang also defines __GNUC__ (as 4) # if defined(__CUDACC__) - // nvcc doesn't always parse __noinline__, + // nvcc doesn't always parse __noinline__, // see: https://svn.boost.org/trac/boost/ticket/9392 # define BOOST_NOINLINE __attribute__ ((noinline)) # else @@ -624,7 +636,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 @@ -657,15 +669,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 @@ -673,6 +687,11 @@ namespace std{ using ::type_info; } # define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS #endif +// Lack of defaulted moves is implied by the lack of either rvalue references or any defaulted functions +#if !defined(BOOST_NO_CXX11_DEFAULTED_MOVES) && (defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)) +# define BOOST_NO_CXX11_DEFAULTED_MOVES +#endif + // Defaulted and deleted function declaration helpers // These macros are intended to be inside a class definition. // BOOST_DEFAULTED_FUNCTION accepts the function declaration and its diff --git a/include/boost/config/header_deprecated.hpp b/include/boost/config/header_deprecated.hpp new file mode 100644 index 00000000..864554f2 --- /dev/null +++ b/include/boost/config/header_deprecated.hpp @@ -0,0 +1,26 @@ +#ifndef BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED +#define BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED + +// Copyright 2017 Peter Dimov. +// +// 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 +// +// BOOST_HEADER_DEPRECATED("") +// +// Expands to the equivalent of +// BOOST_PRAGMA_MESSAGE("This header is deprecated. Use instead.") +// +// Note that this header is C compatible. + +#include + +#if defined(BOOST_ALLOW_DEPRECATED_HEADERS) +# define BOOST_HEADER_DEPRECATED(a) +#else +# define BOOST_HEADER_DEPRECATED(a) BOOST_PRAGMA_MESSAGE("This header is deprecated. Use " a " instead.") +#endif + +#endif // BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED diff --git a/include/boost/config/helper_macros.hpp b/include/boost/config/helper_macros.hpp new file mode 100644 index 00000000..3e79526d --- /dev/null +++ b/include/boost/config/helper_macros.hpp @@ -0,0 +1,37 @@ +#ifndef BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED +#define BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED + +// Copyright 2001 John Maddock. +// Copyright 2017 Peter Dimov. +// +// 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 +// +// BOOST_STRINGIZE(X) +// BOOST_JOIN(X, Y) +// +// Note that this header is C compatible. + +// +// Helper macro BOOST_STRINGIZE: +// Converts the parameter X to a string after macro replacement +// on X has been performed. +// +#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) +#define BOOST_DO_STRINGIZE(X) #X + +// +// Helper macro BOOST_JOIN: +// The following piece of macro magic joins the two +// arguments together, even when one of the arguments is +// itself a macro (see 16.3.1 in C++ standard). The key +// is that macro expansion of macro arguments does not +// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN. +// +#define BOOST_JOIN(X, Y) BOOST_DO_JOIN(X, Y) +#define BOOST_DO_JOIN(X, Y) BOOST_DO_JOIN2(X,Y) +#define BOOST_DO_JOIN2(X, Y) X##Y + +#endif // BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED 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 b7ef572f..6dd7e57c 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -23,7 +23,7 @@ # define BOOST_HAS_SCHED_YIELD # define BOOST_HAS_GETTIMEOFDAY # define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_SIGACTION +//# define BOOST_HAS_SIGACTION #else # if !defined(BOOST_HAS_WINTHREADS) # define BOOST_HAS_WINTHREADS @@ -38,12 +38,23 @@ #ifdef _STDINT_H #define BOOST_HAS_STDINT_H #endif +#if __GNUC__ > 5 && !defined(BOOST_HAS_STDINT_H) +# define BOOST_HAS_STDINT_H +#endif /// Cygwin has no fenv.h #define BOOST_NO_FENV_H +// Cygwin has it's own which breaks unless the correct compiler flags are used: +#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX +#include +#if !(__XSI_VISIBLE >= 500 || __POSIX_VISIBLE >= 200112) +# define BOOST_NO_CXX14_HDR_SHARED_MUTEX +#endif +#endif + // boilerplate code: -#include +#include // // Cygwin lies about XSI conformance, there is no nl_types.h: @@ -51,7 +62,6 @@ #ifdef BOOST_HAS_NL_TYPES_H # undef BOOST_HAS_NL_TYPES_H #endif - 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..c4eef8f8 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -24,8 +24,9 @@ #if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))) // defines int64_t unconditionally, but defines // int64_t only if __GNUC__. Thus, assume a fully usable - // only when using GCC. -# if defined __GNUC__ + // only when using GCC. Update 2017: this appears not to be the case for + // recent glibc releases, see bug report: https://svn.boost.org/trac/boost/ticket/13045 +# if defined(__GNUC__) || ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 5))) # define BOOST_HAS_STDINT_H # endif #endif @@ -71,7 +72,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 cdda0158..a91e4ab4 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -1,30 +1,50 @@ // (C) Copyright Dustin Spicuzza 2009. // Adapted to vxWorks 6.9 by Peter Brockamp 2012. +// Updated for VxWorks 7 by 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) // See http://www.boost.org for most recent version. -// Since WRS does not yet properly support boost under vxWorks -// and this file was badly outdated, but I was keen on using it, -// I patched boost myself to make things work. This has been tested -// and adapted by me for vxWorks 6.9 *only*, as I'm lacking access -// to earlier 6.X versions! The only thing I know for sure is that -// very old versions of vxWorks (namely everything below 6.x) are -// absolutely unable to use boost. This is mainly due to the completely -// outdated libraries and ancient compiler (GCC 2.96 or worse). Do -// not even think of getting this to work, a miserable failure will -// be guaranteed! +// Old versions of vxWorks (namely everything below 6.x) are +// absolutely unable to use boost. Old STLs and compilers +// like (GCC 2.96) . Do not even think of getting this to work, +// a miserable failure will be guaranteed! +// // Equally, this file has been tested for RTPs (Real Time Processes) // only, not for DKMs (Downloadable Kernel Modules). These two types // of executables differ largely in the available functionality of -// the C-library, STL, and so on. A DKM uses a library similar to those -// of vxWorks 5.X - with all its limitations and incompatibilities -// with respect to ANSI C++ and STL. So probably there might be problems -// with the usage of boost from DKMs. WRS or any voluteers are free to -// prove the opposite! - +// the C-library, STL, and so on. A DKM uses a C89 library with no +// wide character support and no guarantee of ANSI C. The same Dinkum +// STL library is used in both contexts. +// +// Similarly the Dinkum abridged STL that supports the loosely specified +// embedded C++ standard has not been tested and is unlikely to work +// on anything but the simplest library. +// ==================================================================== +// +// Additional Configuration +// ------------------------------------------------------------------- +// +// Because of the ordering of include files and other issues the following +// additional definitions worked better outside this file. +// +// When building the log library add the following to the b2 invocation +// define=BOOST_LOG_WITHOUT_IPC +// and +// -DBOOST_LOG_WITHOUT_DEFAULT_FACTORIES +// to your compile options. +// +// When building the test library add +// -DBOOST_TEST_LIMITED_SIGNAL_DETAILS +// to your compile options +// +// When building containers library add +// -DHAVE_MORECORE=0 +// to your c compile options so dlmalloc heap library is compiled +// without brk() calls +// // ==================================================================== // // Some important information regarding the usage of POSIX semaphores: @@ -38,29 +58,14 @@ // Now, VxWorks POSIX-semaphores for DKM's default to the usage of // priority inverting semaphores, which is fine. On the other hand, // for RTP's it defaults to using non priority inverting semaphores, -// which could easily pose a serious problem for a real time process, -// i.e. deadlocks! To overcome this two possibilities do exist: +// which could easily pose a serious problem for a real time process. // -// a) Patch every piece of boost that uses semaphores to instanciate -// the proper type of semaphores. This is non-intrusive with respect -// to the OS and could relatively easy been done by giving all -// semaphores attributes deviating from the default (for in-depth -// information see the POSIX functions pthread_mutexattr_init() -// and pthread_mutexattr_setprotocol()). However this breaks all -// too easily, as with every new version some boost library could -// all in a sudden start using semaphores, resurrecting the very -// same, hard to locate problem over and over again! -// -// b) We could change the default properties for POSIX-semaphores -// that VxWorks uses for RTP's and this is being suggested here, -// as it will more or less seamlessly integrate with boost. I got -// the following information from WRS how to do this, compare -// Wind River TSR# 1209768: -// -// Instructions for changing the default properties of POSIX- -// semaphores for RTP's in VxWorks 6.9: -// - Edit the file /vxworks-6.9/target/usr/src/posix/pthreadLib.c -// in the root of your Workbench-installation. +// To change the default properties for POSIX-semaphores in VxWorks 7 +// enable core > CORE_USER Menu > DEFAULT_PTHREAD_PRIO_INHERIT +// +// In VxWorks 6.x so as to integrate with boost. +// - Edit the file +// installDir/vxworks-6.x/target/usr/src/posix/pthreadLib.c // - Around line 917 there should be the definition of the default // mutex attributes: // @@ -81,30 +86,11 @@ // pAttr->mutexAttrType = PTHREAD_MUTEX_DEFAULT; // // Here again, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT. -// - Finally, rebuild your VSB. This will create a new VxWorks kernel +// - Finally, rebuild your VSB. This will rebuild the libraries // with the changed properties. That's it! Now, using boost should // no longer cause any problems with task deadlocks! // -// And here's another useful piece of information concerning VxWorks' -// POSIX-functionality in general: -// VxWorks is not a genuine POSIX-OS in itself, rather it is using a -// kind of compatibility layer (sort of a wrapper) to emulate the -// POSIX-functionality by using its own resources and functions. -// At the time a task (thread) calls it's first POSIX-function during -// runtime it is being transformed by the OS into a POSIX-thread. -// This transformation does include a call to malloc() to allocate the -// memory required for the housekeeping of POSIX-threads. In a high -// priority RTP this malloc() call may be highly undesirable, as its -// timing is more or less unpredictable (depending on what your actual -// heap looks like). You can circumvent this problem by calling the -// function thread_self() at a well defined point in the code of the -// task, e.g. shortly after the task spawns up. Thereby you are able -// to define the time when the task-transformation will take place and -// you could shift it to an uncritical point where a malloc() call is -// tolerable. So, if this could pose a problem for your code, remember -// to call thread_self() from the affected task at an early stage. -// -// ==================================================================== +// ==================================================================== // Block out all versions before vxWorks 6.x, as these don't work: // Include header with the vxWorks version information and query them @@ -158,11 +144,6 @@ #define BOOST_HAS_CLOCK_GETTIME #define BOOST_HAS_MACRO_USE_FACET -// Generally unavailable functionality, delivered by boost's test function: -//#define BOOST_NO_DEDUCED_TYPENAME // Commented this out, boost's test gives an errorneous result! -#define BOOST_NO_CXX11_EXTERN_TEMPLATE -#define BOOST_NO_CXX11_VARIADIC_MACROS - // Generally available threading API's: #define BOOST_HAS_PTHREADS #define BOOST_HAS_SCHED_YIELD @@ -180,7 +161,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 @@ -191,14 +172,7 @@ # endif #endif -// vxWorks doesn't work with asio serial ports: -#define BOOST_ASIO_DISABLE_SERIAL_PORT -// TODO: The problem here seems to bee that vxWorks uses its own, very specific -// ways to handle serial ports, incompatible with POSIX or anything... -// Maybe a specific implementation would be possible, but until the -// straight need arises... This implementation would presumably consist -// of some vxWorks specific ioctl-calls, etc. Any voluteers? - +#if (_WRS_VXWORKS_MAJOR < 7) // vxWorks-around: #defines CLOCKS_PER_SEC as sysClkRateGet() but // miserably fails to #include the required to make // sysClkRateGet() available! So we manually include it here. @@ -208,11 +182,12 @@ #endif // vxWorks-around: In the macros INT32_C(), UINT32_C(), INT64_C() and -// UINT64_C() are defined errorneously, yielding not a signed/ +// UINT64_C() are defined erroneously, yielding not a signed/ // unsigned long/long long type, but a signed/unsigned int/long // type. Eventually this leads to compile errors in ratio_fwd.hpp, // when trying to define several constants which do not fit into a // long type! We correct them here by redefining. + #include // Some macro-magic to do the job @@ -231,12 +206,16 @@ #define UINT64_C(x) VX_JOIN(x, ULL) // #include Libraries required for the following function adaption +#include +#endif // _WRS_VXWORKS_MAJOR < 7 + #include #include -#include // Use C-linkage for the following helper functions +#ifdef __cplusplus extern "C" { +#endif // vxWorks-around: The required functions getrlimit() and getrlimit() are missing. // But we have the similar functions getprlimit() and setprlimit(), @@ -248,7 +227,7 @@ extern "C" { // TODO: getprlimit() and setprlimit() do exist for RTPs only, for whatever reason. // Thus for DKMs there would have to be another implementation. -#ifdef __RTP__ +#if defined ( __RTP__) && (_WRS_VXWORKS_MAJOR < 7) inline int getrlimit(int resource, struct rlimit *rlp){ return getprlimit(0, 0, resource, rlp); } @@ -273,23 +252,27 @@ inline int truncate(const char *p, off_t l){ return close(fd); } +#ifdef __GNUC__ +#define ___unused __attribute__((unused)) +#else +#define ___unused +#endif + // Fake symlink handling by dummy functions: -inline int symlink(const char*, const char*){ +inline int symlink(const char* path1 ___unused, const char* path2 ___unused){ // vxWorks has no symlinks -> always return an error! errno = EACCES; return -1; } -inline ssize_t readlink(const char*, char*, size_t){ +inline ssize_t readlink(const char* path1 ___unused, char* path2 ___unused, size_t size ___unused){ // vxWorks has no symlinks -> always return an error! errno = EACCES; 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,8 +280,20 @@ 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()! +#ifdef __cplusplus +} // extern "C" +#endif + +/* + * moved to os/utils/unix/freind_h/times.h in VxWorks 7 + * to avoid conflict with MPL operator times + */ +#if (_WRS_VXWORKS_MAJOR < 7) +#ifdef __cplusplus + +// vxWorks provides neither struct tms nor function times()! // We implement an empty dummy-function, simply setting the user // and system time to the half of thew actual system ticks-value // and the child user and system time to 0. @@ -315,7 +310,8 @@ struct tms{ clock_t tms_cstime; // System CPU time of terminated child processes }; -inline clock_t times(struct tms *t){ + + inline clock_t times(struct tms *t){ struct timespec ts; clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); clock_t ticks(static_cast(static_cast(ts.tv_sec) * CLOCKS_PER_SEC + @@ -327,7 +323,16 @@ inline clock_t times(struct tms *t){ return ticks; } -} // extern "C" + +namespace std { + using ::times; +} +#endif // __cplusplus +#endif // _WRS_VXWORKS_MAJOR < 7 + + +#ifdef __cplusplus +extern "C" void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h // Put the selfmade functions into the std-namespace, just in case namespace std { @@ -338,9 +343,11 @@ namespace std { using ::truncate; using ::symlink; using ::readlink; - using ::times; - using ::gettimeofday; +#if (_WRS_VXWORKS_MAJOR < 7) + using ::gettimeofday; +#endif } +#endif // __cplusplus // Some more macro-magic: // vxWorks-around: Some functions are not present or broken in vxWorks @@ -348,22 +355,79 @@ namespace std { // Include signal.h which might contain a typo to be corrected here #include - +#if (_WRS_VXWORKS_MAJOR < 7) #define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway! +inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks! +#endif #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! #ifndef FPE_FLTINV # define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy #endif #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 +#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 the Dinkum STL version and GCC version (or ICC and DCC) +#ifndef _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011 +# define BOOST_NO_CXX11_ADDRESSOF // C11 addressof operator on memory location +# define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_ATOMIC_SMART_PTR +# define BOOST_NO_CXX11_NUMERIC_LIMITS // max_digits10 in test/../print_helper.hpp +# define BOOST_NO_CXX11_SMART_PTR +# define BOOST_NO_CXX11_STD_ALIGN + + +# define BOOST_NO_CXX11_HDR_ARRAY +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_HDR_CHRONO +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_FORWARD_LIST //serialization/test/test_list.cpp +# define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_MUTEX +# define BOOST_NO_CXX11_HDR_RANDOM //math/../test_data.hpp +# define BOOST_NO_CXX11_HDR_RATIO +# define BOOST_NO_CXX11_HDR_REGEX +# define BOOST_NO_CXX14_HDR_SHARED_MUTEX +# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR +# define BOOST_NO_CXX11_HDR_THREAD +# define BOOST_NO_CXX11_HDR_TYPEINDEX +# define BOOST_NO_CXX11_HDR_TYPE_TRAITS +# define BOOST_NO_CXX11_HDR_TUPLE +# define BOOST_NO_CXX11_HDR_UNORDERED_MAP +# define BOOST_NO_CXX11_HDR_UNORDERED_SET +#else +#ifndef BOOST_SYSTEM_NO_DEPRECATED +# define BOOST_SYSTEM_NO_DEPRECATED // workaround link error in spirit +#endif +#endif + + +// NONE is used in enums in lamda and other libraries +#undef NONE +// restrict is an iostreams class +#undef restrict + +// use fake poll() from Unix layer in ASIO to get full functionality +// most libraries will use select() but this define allows 'iostream' functionality +// which is based on poll() only +#if (_WRS_VXWORKS_MAJOR > 6) +# ifndef BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR +# define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR +# endif +#else +# define BOOST_ASIO_DISABLE_SERIAL_PORT +#endif + + 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/pragma_message.hpp b/include/boost/config/pragma_message.hpp new file mode 100644 index 00000000..b2c5ff2e --- /dev/null +++ b/include/boost/config/pragma_message.hpp @@ -0,0 +1,31 @@ +#ifndef BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED +#define BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED + +// Copyright 2017 Peter Dimov. +// +// 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 +// +// BOOST_PRAGMA_MESSAGE("message") +// +// Expands to the equivalent of #pragma message("message") +// +// Note that this header is C compatible. + +#include + +#if defined(BOOST_DISABLE_PRAGMA_MESSAGE) +# define BOOST_PRAGMA_MESSAGE(x) +#elif defined(__INTEL_COMPILER) +# define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x)) +#elif defined(__GNUC__) +# define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x))) +#elif defined(_MSC_VER) +# define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x)) +#else +# define BOOST_PRAGMA_MESSAGE(x) +#endif + +#endif // BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 5f7a0321..e829f08e 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -96,7 +96,8 @@ #include #endif #include -#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) +#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \ + && !defined(__VXWORKS__) # define BOOST_NO_STD_TYPEINFO #endif @@ -147,21 +148,42 @@ # define BOOST_NO_CXX11_STD_ALIGN #endif +// Before 650 std::pointer_traits has a broken rebind template +#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650 +# define BOOST_NO_CXX11_POINTER_TRAITS +#elif defined(BOOST_MSVC) && BOOST_MSVC < 1910 +# define BOOST_NO_CXX11_POINTER_TRAITS +#endif + #if defined(__has_include) #if !__has_include() # define BOOST_NO_CXX14_HDR_SHARED_MUTEX -#elif __cplusplus < 201402 +#elif (__cplusplus < 201402) && !defined(_MSC_VER) # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif #elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif -// C++17 features +// C++14 features #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif + +// C++17 features +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) +# define BOOST_NO_CXX17_STD_APPLY +# define BOOST_NO_CXX17_ITERATOR_TRAITS +#endif +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709) # define BOOST_NO_CXX17_STD_INVOKE #endif +#if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)) +// Deprecated std::iterator: +# define BOOST_NO_STD_ITERATOR +#endif + #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400) // Intel's compiler can't handle this header yet: # define BOOST_NO_CXX11_HDR_ATOMIC @@ -182,14 +204,47 @@ #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 +# define BOOST_NO_CXX98_FUNCTION_BASE +# define BOOST_NO_CXX98_BINDERS # endif #endif + +// +// Things not supported by the CLR: +#ifdef _M_CEE +#ifndef BOOST_NO_CXX11_HDR_MUTEX +# define BOOST_NO_CXX11_HDR_MUTEX +#endif +#ifndef BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_HDR_ATOMIC +#endif +#ifndef BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_FUTURE +#endif +#ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +#endif +#ifndef BOOST_NO_CXX11_HDR_THREAD +# define BOOST_NO_CXX11_HDR_THREAD +#endif +#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX +# define BOOST_NO_CXX14_HDR_SHARED_MUTEX +#endif +#ifndef BOOST_NO_CXX14_STD_EXCHANGE +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif +#ifndef BOOST_NO_FENV_H +# define BOOST_NO_FENV_H +#endif +#endif + #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER #else diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 07c48965..75ac2bb7 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -55,6 +55,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -72,8 +73,13 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS // // Intrinsic type_traits support. diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 96cf57c3..a051dbb7 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -29,13 +29,18 @@ // aliases since members rebind_alloc and rebind_traits require it. #if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES) # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS #endif #if __cplusplus < 201103 -# define BOOST_NO_CXX11_HDR_ARRAY +// +// These two appear to be somewhat useable in C++03 mode, there may be others... +// +//# define BOOST_NO_CXX11_HDR_ARRAY +//# define BOOST_NO_CXX11_HDR_FORWARD_LIST + # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE -# define BOOST_NO_CXX11_HDR_FORWARD_LIST # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_MUTEX # define BOOST_NO_CXX11_HDR_RANDOM @@ -49,6 +54,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_STD_ALIGN @@ -73,10 +79,30 @@ #if _LIBCPP_VERSION < 3700 // libc++ uses a non-standard messages_base #define BOOST_NO_STD_MESSAGES -// C++17 features -#define BOOST_NO_CXX17_STD_INVOKE #endif +// C++14 features +#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif + +// C++17 features +#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_APPLY +#endif +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR) +# define BOOST_NO_AUTO_PTR +#endif +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) +# define BOOST_NO_CXX98_RANDOM_SHUFFLE +#endif +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +# define BOOST_NO_CXX98_BINDERS +#endif + +#define BOOST_NO_CXX17_ITERATOR_TRAITS +#define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result) + #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) // This is a bit of a sledgehammer, because really it's just libc++abi that has no // support for thread_local, leading to linker errors such as @@ -85,6 +111,13 @@ # define BOOST_NO_CXX11_THREAD_LOCAL #endif +#if defined(__linux__) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) +// After libc++-dev is installed on Trusty, clang++-libc++ almost works, +// except uses of `thread_local` fail with undefined reference to +// `__cxa_thread_atexit`. +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif + #if defined(__has_include) #if !__has_include() # define BOOST_NO_CXX14_HDR_SHARED_MUTEX diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index d4596498..f6eab26c 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -78,6 +78,7 @@ # include #endif +#ifndef __VXWORKS__ // VxWorks uses Dinkum, not GNU STL with GCC #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST @@ -91,6 +92,7 @@ # define BOOST_HASH_MAP_HEADER # endif #endif +#endif // // Decide whether we have C++11 support turned on: @@ -101,8 +103,8 @@ // // Decide which version of libstdc++ we have, normally -// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly -// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++ +// libstdc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly +// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the libstdc++ // developers. He also commented: // // "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in @@ -110,7 +112,7 @@ // Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support // than any release in the 4.2 series." // -// Another resource for understanding stdlibc++ features is: +// Another resource for understanding libstdc++ features is: // http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x // // However, using the GCC version number fails when the compiler is clang since this @@ -143,6 +145,37 @@ # 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 +// +// clang is unable to parse some GCC headers, add those workarounds here: +// +#if BOOST_LIBSTDCXX_VERSION < 50000 +# define BOOST_NO_CXX11_HDR_REGEX +#endif +// +// GCC 4.7.x has no __cxa_thread_atexit which +// thread_local objects require for cleanup: +// +#if BOOST_LIBSTDCXX_VERSION < 40800 +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif +// +// Early clang versions can handle , not exactly sure which versions +// but certainly up to clang-3.8 and gcc-4.6: +// +#if (__clang_major__ < 5) +# if BOOST_LIBSTDCXX_VERSION < 40800 +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_MUTEX +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_CHRONO +# endif +#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 @@ -216,15 +249,17 @@ #if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11) # define BOOST_NO_CXX11_HDR_TYPEINDEX # define BOOST_NO_CXX11_ADDRESSOF +# define BOOST_NO_CXX17_ITERATOR_TRAITS #endif // C++0x features in GCC 4.7.0 and later // #if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11) // Note that although existed prior to 4.7, "steady_clock" is spelled "monotonic_clock" -// so 4.7.0 is the first truely conforming one. +// so 4.7.0 is the first truly conforming one. # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS #endif // C++0x features in GCC 4.8.0 and later // @@ -240,6 +275,9 @@ // even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively. # define BOOST_NO_CXX11_HDR_REGEX #endif +#if (BOOST_LIBSTDCXX_VERSION < 40900) || (__cplusplus <= 201103) +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif #if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7))) // As of clang-3.6, libstdc++ header throws up errors with clang: @@ -256,10 +294,11 @@ #endif // -// C++17 features in GCC 6.1 and later +// C++17 features in GCC 7.1 and later // -#if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L) +#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_STD_APPLY #endif #if defined(__has_include) diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 7092e9ba..81919e01 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -44,6 +44,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -61,8 +62,13 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #define BOOST_STDLIB "Modena C++ standard library" diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index ce60b7ee..0e2e2afe 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 @@ -68,6 +68,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -85,7 +86,12 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__) diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index e87ec78d..df602155 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -180,6 +180,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -197,5 +198,10 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 1623de38..0c8ab2e4 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -138,6 +138,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -155,7 +156,12 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #define BOOST_STDLIB "SGI standard library" diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 6d796128..2e304e2b 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -228,6 +228,7 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -245,7 +246,12 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT) diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 0876cf8c..c4e1fb18 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -44,6 +44,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL @@ -61,7 +62,12 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// C++14 features +# define BOOST_NO_CXX14_STD_EXCHANGE + // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #define BOOST_STDLIB "Visual Age default standard library" diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp new file mode 100644 index 00000000..4d5beb18 --- /dev/null +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -0,0 +1,60 @@ +// 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_POINTER_TRAITS +#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 +#define BOOST_NO_CXX17_ITERATOR_TRAITS diff --git a/include/boost/config/workaround.hpp b/include/boost/config/workaround.hpp new file mode 100644 index 00000000..fca8f3ab --- /dev/null +++ b/include/boost/config/workaround.hpp @@ -0,0 +1,279 @@ +// Copyright David Abrahams 2002. +// 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) +#ifndef BOOST_CONFIG_WORKAROUND_HPP +#define BOOST_CONFIG_WORKAROUND_HPP + +// Compiler/library version workaround macro +// +// Usage: +// +// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) +// // workaround for eVC4 and VC6 +// ... // workaround code here +// #endif +// +// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the +// first argument must be undefined or expand to a numeric +// value. The above expands to: +// +// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300 +// +// When used for workarounds that apply to the latest known version +// and all earlier versions of a compiler, the following convention +// should be observed: +// +// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301)) +// +// The version number in this case corresponds to the last version in +// which the workaround was known to have been required. When +// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro +// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates +// the workaround for any version of the compiler. When +// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or +// error will be issued if the compiler version exceeds the argument +// to BOOST_TESTED_AT(). This can be used to locate workarounds which +// may be obsoleted by newer versions. + +#ifndef BOOST_STRICT_CONFIG + +#include + +#ifndef __BORLANDC__ +#define __BORLANDC___WORKAROUND_GUARD 1 +#else +#define __BORLANDC___WORKAROUND_GUARD 0 +#endif +#ifndef __CODEGEARC__ +#define __CODEGEARC___WORKAROUND_GUARD 1 +#else +#define __CODEGEARC___WORKAROUND_GUARD 0 +#endif +#ifndef _MSC_VER +#define _MSC_VER_WORKAROUND_GUARD 1 +#else +#define _MSC_VER_WORKAROUND_GUARD 0 +#endif +#ifndef _MSC_FULL_VER +#define _MSC_FULL_VER_WORKAROUND_GUARD 1 +#else +#define _MSC_FULL_VER_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_MSVC +#define BOOST_MSVC_WORKAROUND_GUARD 1 +#else +#define BOOST_MSVC_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_MSVC_FULL_VER +#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1 +#else +#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0 +#endif +#ifndef __GNUC__ +#define __GNUC___WORKAROUND_GUARD 1 +#else +#define __GNUC___WORKAROUND_GUARD 0 +#endif +#ifndef __GNUC_MINOR__ +#define __GNUC_MINOR___WORKAROUND_GUARD 1 +#else +#define __GNUC_MINOR___WORKAROUND_GUARD 0 +#endif +#ifndef __GNUC_PATCHLEVEL__ +#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1 +#else +#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_GCC +#define BOOST_GCC_WORKAROUND_GUARD 1 +#define BOOST_GCC_VERSION_WORKAROUND_GUARD 1 +#else +#define BOOST_GCC_WORKAROUND_GUARD 0 +#define BOOST_GCC_VERSION_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 +#define __IBMCPP___WORKAROUND_GUARD 0 +#endif +#ifndef __SUNPRO_CC +#define __SUNPRO_CC_WORKAROUND_GUARD 1 +#else +#define __SUNPRO_CC_WORKAROUND_GUARD 0 +#endif +#ifndef __DECCXX_VER +#define __DECCXX_VER_WORKAROUND_GUARD 1 +#else +#define __DECCXX_VER_WORKAROUND_GUARD 0 +#endif +#ifndef __MWERKS__ +#define __MWERKS___WORKAROUND_GUARD 1 +#else +#define __MWERKS___WORKAROUND_GUARD 0 +#endif +#ifndef __EDG__ +#define __EDG___WORKAROUND_GUARD 1 +#else +#define __EDG___WORKAROUND_GUARD 0 +#endif +#ifndef __EDG_VERSION__ +#define __EDG_VERSION___WORKAROUND_GUARD 1 +#else +#define __EDG_VERSION___WORKAROUND_GUARD 0 +#endif +#ifndef __HP_aCC +#define __HP_aCC_WORKAROUND_GUARD 1 +#else +#define __HP_aCC_WORKAROUND_GUARD 0 +#endif +#ifndef __hpxstd98 +#define __hpxstd98_WORKAROUND_GUARD 1 +#else +#define __hpxstd98_WORKAROUND_GUARD 0 +#endif +#ifndef _CRAYC +#define _CRAYC_WORKAROUND_GUARD 1 +#else +#define _CRAYC_WORKAROUND_GUARD 0 +#endif +#ifndef __DMC__ +#define __DMC___WORKAROUND_GUARD 1 +#else +#define __DMC___WORKAROUND_GUARD 0 +#endif +#ifndef MPW_CPLUS +#define MPW_CPLUS_WORKAROUND_GUARD 1 +#else +#define MPW_CPLUS_WORKAROUND_GUARD 0 +#endif +#ifndef __COMO__ +#define __COMO___WORKAROUND_GUARD 1 +#else +#define __COMO___WORKAROUND_GUARD 0 +#endif +#ifndef __COMO_VERSION__ +#define __COMO_VERSION___WORKAROUND_GUARD 1 +#else +#define __COMO_VERSION___WORKAROUND_GUARD 0 +#endif +#ifndef __INTEL_COMPILER +#define __INTEL_COMPILER_WORKAROUND_GUARD 1 +#else +#define __INTEL_COMPILER_WORKAROUND_GUARD 0 +#endif +#ifndef __ICL +#define __ICL_WORKAROUND_GUARD 1 +#else +#define __ICL_WORKAROUND_GUARD 0 +#endif +#ifndef _COMPILER_VERSION +#define _COMPILER_VERSION_WORKAROUND_GUARD 1 +#else +#define _COMPILER_VERSION_WORKAROUND_GUARD 0 +#endif + +#ifndef _RWSTD_VER +#define _RWSTD_VER_WORKAROUND_GUARD 1 +#else +#define _RWSTD_VER_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_RWSTD_VER +#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1 +#else +#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0 +#endif +#ifndef __GLIBCPP__ +#define __GLIBCPP___WORKAROUND_GUARD 1 +#else +#define __GLIBCPP___WORKAROUND_GUARD 0 +#endif +#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC +#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1 +#else +#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0 +#endif +#ifndef __SGI_STL_PORT +#define __SGI_STL_PORT_WORKAROUND_GUARD 1 +#else +#define __SGI_STL_PORT_WORKAROUND_GUARD 0 +#endif +#ifndef _STLPORT_VERSION +#define _STLPORT_VERSION_WORKAROUND_GUARD 1 +#else +#define _STLPORT_VERSION_WORKAROUND_GUARD 0 +#endif +#ifndef __LIBCOMO_VERSION__ +#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1 +#else +#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0 +#endif +#ifndef _CPPLIB_VER +#define _CPPLIB_VER_WORKAROUND_GUARD 1 +#else +#define _CPPLIB_VER_WORKAROUND_GUARD 0 +#endif + +#ifndef BOOST_INTEL_CXX_VERSION +#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1 +#else +#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_INTEL_WIN +#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1 +#else +#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_DINKUMWARE_STDLIB +#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1 +#else +#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_INTEL +#define BOOST_INTEL_WORKAROUND_GUARD 1 +#else +#define BOOST_INTEL_WORKAROUND_GUARD 0 +#endif +// Always define to zero, if it's used it'll be defined my MPL: +#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0 + +#define BOOST_WORKAROUND(symbol, test) \ + ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \ + (symbol != 0) && (1 % (( (symbol test) ) + 1))) +// ^ ^ ^ ^ +// The extra level of parenthesis nesting above, along with the +// BOOST_OPEN_PAREN indirection below, is required to satisfy the +// broken preprocessor in MWCW 8.3 and earlier. +// +// The basic mechanism works as follows: +// (symbol test) + 1 => if (symbol test) then 2 else 1 +// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0 +// +// The complication with % is for cooperation with BOOST_TESTED_AT(). +// When "test" is BOOST_TESTED_AT(x) and +// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined, +// +// symbol test => if (symbol <= x) then 1 else -1 +// (symbol test) + 1 => if (symbol <= x) then 2 else 0 +// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero +// + +#ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS +# define BOOST_OPEN_PAREN ( +# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1 +#else +# define BOOST_TESTED_AT(value) != ((value)-(value)) +#endif + +#else + +#define BOOST_WORKAROUND(symbol, test) 0 + +#endif + +#endif // BOOST_CONFIG_WORKAROUND_HPP diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index bf7097ec..c8474c46 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -34,6 +34,17 @@ #endif #include +// +// For the following code we get several warnings along the lines of: +// +// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant +// +// So we declare this a system header to suppress these warnings. +// See also https://github.com/boostorg/config/issues/190 +// +#if defined(__GNUC__) && (__GNUC__ >= 4) +#pragma GCC system_header +#endif // // Note that GLIBC is a bit inconsistent about whether int64_t is defined or not @@ -60,7 +71,7 @@ # include // There is a bug in Cygwin two _C macros -# if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__) +# if defined(INTMAX_C) && defined(__CYGWIN__) # undef INTMAX_C # undef UINTMAX_C # define INTMAX_C(c) c##LL @@ -367,14 +378,11 @@ namespace boost #include #endif -// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config. -#if !defined(__PGIC__) - #if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \ || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ - || defined(__CYGWIN__) \ + || defined(__CYGWIN__) || defined(__VXWORKS__) \ || 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(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX) namespace boost { using ::intptr_t; @@ -393,8 +401,6 @@ namespace boost { #endif -#endif // !defined(__PGIC__) - #endif // BOOST_CSTDINT_HPP @@ -413,15 +419,19 @@ INT#_C macros if they're not already defined (John Maddock). #if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \ (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C)) // -// For the following code we get several warnings along the lines of: +// 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 // -// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant -// -// So we declare this a system header to suppress these warnings. -// -#if defined(__GNUC__) && (__GNUC__ >= 4) -#pragma GCC system_header -#endif +#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 diff --git a/include/boost/cxx11_char_types.hpp b/include/boost/cxx11_char_types.hpp index eab46a46..71b9b70d 100644 --- a/include/boost/cxx11_char_types.hpp +++ b/include/boost/cxx11_char_types.hpp @@ -49,7 +49,7 @@ namespace boost { -# if defined(BOOST_NO_CHAR16_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10 +# if defined(BOOST_NO_CXX11_CHAR16_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10 typedef boost::uint_least16_t char16; typedef std::basic_string u16string; # else @@ -57,7 +57,7 @@ namespace boost typedef std::u16string u16string; # endif -# if defined(BOOST_NO_CHAR32_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10 +# if defined(BOOST_NO_CXX11_CHAR32_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10 typedef boost::uint_least32_t char32; typedef std::basic_string u32string; # else diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 40b3423b..fb961158 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -3,265 +3,8 @@ // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef WORKAROUND_DWA2002126_HPP -# define WORKAROUND_DWA2002126_HPP +#define WORKAROUND_DWA2002126_HPP -// Compiler/library version workaround macro -// -// Usage: -// -// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -// // workaround for eVC4 and VC6 -// ... // workaround code here -// #endif -// -// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the -// first argument must be undefined or expand to a numeric -// value. The above expands to: -// -// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300 -// -// When used for workarounds that apply to the latest known version -// and all earlier versions of a compiler, the following convention -// should be observed: -// -// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301)) -// -// The version number in this case corresponds to the last version in -// which the workaround was known to have been required. When -// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro -// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates -// the workaround for any version of the compiler. When -// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or -// error will be issued if the compiler version exceeds the argument -// to BOOST_TESTED_AT(). This can be used to locate workarounds which -// may be obsoleted by newer versions. - -# ifndef BOOST_STRICT_CONFIG - -#include - -#ifndef __BORLANDC__ -#define __BORLANDC___WORKAROUND_GUARD 1 -#else -#define __BORLANDC___WORKAROUND_GUARD 0 -#endif -#ifndef __CODEGEARC__ -#define __CODEGEARC___WORKAROUND_GUARD 1 -#else -#define __CODEGEARC___WORKAROUND_GUARD 0 -#endif -#ifndef _MSC_VER -#define _MSC_VER_WORKAROUND_GUARD 1 -#else -#define _MSC_VER_WORKAROUND_GUARD 0 -#endif -#ifndef _MSC_FULL_VER -#define _MSC_FULL_VER_WORKAROUND_GUARD 1 -#else -#define _MSC_FULL_VER_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_MSVC -#define BOOST_MSVC_WORKAROUND_GUARD 1 -#else -#define BOOST_MSVC_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_MSVC_FULL_VER -#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1 -#else -#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0 -#endif -#ifndef __GNUC__ -#define __GNUC___WORKAROUND_GUARD 1 -#else -#define __GNUC___WORKAROUND_GUARD 0 -#endif -#ifndef __GNUC_MINOR__ -#define __GNUC_MINOR___WORKAROUND_GUARD 1 -#else -#define __GNUC_MINOR___WORKAROUND_GUARD 0 -#endif -#ifndef __GNUC_PATCHLEVEL__ -#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1 -#else -#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 -#endif -#ifndef __IBMCPP__ -#define __IBMCPP___WORKAROUND_GUARD 1 -#else -#define __IBMCPP___WORKAROUND_GUARD 0 -#endif -#ifndef __SUNPRO_CC -#define __SUNPRO_CC_WORKAROUND_GUARD 1 -#else -#define __SUNPRO_CC_WORKAROUND_GUARD 0 -#endif -#ifndef __DECCXX_VER -#define __DECCXX_VER_WORKAROUND_GUARD 1 -#else -#define __DECCXX_VER_WORKAROUND_GUARD 0 -#endif -#ifndef __MWERKS__ -#define __MWERKS___WORKAROUND_GUARD 1 -#else -#define __MWERKS___WORKAROUND_GUARD 0 -#endif -#ifndef __EDG__ -#define __EDG___WORKAROUND_GUARD 1 -#else -#define __EDG___WORKAROUND_GUARD 0 -#endif -#ifndef __EDG_VERSION__ -#define __EDG_VERSION___WORKAROUND_GUARD 1 -#else -#define __EDG_VERSION___WORKAROUND_GUARD 0 -#endif -#ifndef __HP_aCC -#define __HP_aCC_WORKAROUND_GUARD 1 -#else -#define __HP_aCC_WORKAROUND_GUARD 0 -#endif -#ifndef __hpxstd98 -#define __hpxstd98_WORKAROUND_GUARD 1 -#else -#define __hpxstd98_WORKAROUND_GUARD 0 -#endif -#ifndef _CRAYC -#define _CRAYC_WORKAROUND_GUARD 1 -#else -#define _CRAYC_WORKAROUND_GUARD 0 -#endif -#ifndef __DMC__ -#define __DMC___WORKAROUND_GUARD 1 -#else -#define __DMC___WORKAROUND_GUARD 0 -#endif -#ifndef MPW_CPLUS -#define MPW_CPLUS_WORKAROUND_GUARD 1 -#else -#define MPW_CPLUS_WORKAROUND_GUARD 0 -#endif -#ifndef __COMO__ -#define __COMO___WORKAROUND_GUARD 1 -#else -#define __COMO___WORKAROUND_GUARD 0 -#endif -#ifndef __COMO_VERSION__ -#define __COMO_VERSION___WORKAROUND_GUARD 1 -#else -#define __COMO_VERSION___WORKAROUND_GUARD 0 -#endif -#ifndef __INTEL_COMPILER -#define __INTEL_COMPILER_WORKAROUND_GUARD 1 -#else -#define __INTEL_COMPILER_WORKAROUND_GUARD 0 -#endif -#ifndef __ICL -#define __ICL_WORKAROUND_GUARD 1 -#else -#define __ICL_WORKAROUND_GUARD 0 -#endif -#ifndef _COMPILER_VERSION -#define _COMPILER_VERSION_WORKAROUND_GUARD 1 -#else -#define _COMPILER_VERSION_WORKAROUND_GUARD 0 -#endif - -#ifndef _RWSTD_VER -#define _RWSTD_VER_WORKAROUND_GUARD 1 -#else -#define _RWSTD_VER_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_RWSTD_VER -#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1 -#else -#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0 -#endif -#ifndef __GLIBCPP__ -#define __GLIBCPP___WORKAROUND_GUARD 1 -#else -#define __GLIBCPP___WORKAROUND_GUARD 0 -#endif -#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC -#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1 -#else -#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0 -#endif -#ifndef __SGI_STL_PORT -#define __SGI_STL_PORT_WORKAROUND_GUARD 1 -#else -#define __SGI_STL_PORT_WORKAROUND_GUARD 0 -#endif -#ifndef _STLPORT_VERSION -#define _STLPORT_VERSION_WORKAROUND_GUARD 1 -#else -#define _STLPORT_VERSION_WORKAROUND_GUARD 0 -#endif -#ifndef __LIBCOMO_VERSION__ -#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1 -#else -#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0 -#endif -#ifndef _CPPLIB_VER -#define _CPPLIB_VER_WORKAROUND_GUARD 1 -#else -#define _CPPLIB_VER_WORKAROUND_GUARD 0 -#endif - -#ifndef BOOST_INTEL_CXX_VERSION -#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1 -#else -#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_INTEL_WIN -#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1 -#else -#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_DINKUMWARE_STDLIB -#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1 -#else -#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_INTEL -#define BOOST_INTEL_WORKAROUND_GUARD 1 -#else -#define BOOST_INTEL_WORKAROUND_GUARD 0 -#endif -// Always define to zero, if it's used it'll be defined my MPL: -#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0 - -# define BOOST_WORKAROUND(symbol, test) \ - ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \ - (symbol != 0) && (1 % (( (symbol test) ) + 1))) -// ^ ^ ^ ^ -// The extra level of parenthesis nesting above, along with the -// BOOST_OPEN_PAREN indirection below, is required to satisfy the -// broken preprocessor in MWCW 8.3 and earlier. -// -// The basic mechanism works as follows: -// (symbol test) + 1 => if (symbol test) then 2 else 1 -// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0 -// -// The complication with % is for cooperation with BOOST_TESTED_AT(). -// When "test" is BOOST_TESTED_AT(x) and -// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined, -// -// symbol test => if (symbol <= x) then 1 else -1 -// (symbol test) + 1 => if (symbol <= x) then 2 else 0 -// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero -// - -# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS -# define BOOST_OPEN_PAREN ( -# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1 -# else -# define BOOST_TESTED_AT(value) != ((value)-(value)) -# endif - -# else - -# define BOOST_WORKAROUND(symbol, test) 0 - -# endif +#include #endif // WORKAROUND_DWA2002126_HPP diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 94c16c31..967ff285 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 106300 +#define BOOST_VERSION 106800 // // 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_63" +#define BOOST_LIB_VERSION "1_68" #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2f6a122a..a48ac3f3 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -8,6 +8,8 @@ # the template defined in options_v2.jam. # +import testing ; + project : requirements gcc:-Wno-deprecated-declarations @@ -57,6 +59,7 @@ test-suite config : #input-files : #requirements off + gcc-4.4.7,0x:no # does not compile with -fno-rtti [ check-target-builds has_atomic_lib : atomic ] [ check-target-builds has_pthread_lib : pthread ] [ check-target-builds has_rt_lib : rt ] @@ -67,6 +70,7 @@ test-suite config : #input-files : #requirements off + vxworks:no # vx requires complete library rebuild to turn off exceptions [ check-target-builds has_atomic_lib : atomic ] [ check-target-builds has_pthread_lib : pthread ] [ check-target-builds has_rt_lib : rt ] @@ -75,7 +79,9 @@ test-suite config [ run config_info.cpp : : : always_show_run_output single msvc:static msvc:static ] [ run config_info.cpp : : : always_show_run_output multi : config_info_threaded ] [ run config_info.cpp : : : always_show_run_output off : config_info_no_rtti ] - [ run config_info.cpp : : : always_show_run_output off : config_info_no_except ] + [ run config_info.cpp : : : always_show_run_output off + vxworks:no + : config_info_no_except ] [ run math_info.cpp : : : always_show_run_output borland:static borland:static ] [ run abi/abi_test.cpp abi/main.cpp ] [ run limits_test.cpp ] @@ -86,6 +92,7 @@ test-suite config shared BOOST_DYN_LINK=1 BOOST_CONFIG_NO_LIB=1 + vxworks:shared : config_link_test ] @@ -97,6 +104,9 @@ test-suite config [ run cstdint_test2.cpp : : : all gcc:"-Wno-long-long -Wextra" darwin:-Wno-long-long ] [ compile cstdint_include_test.cpp : all gcc:-Wextra ] [ run config_build_check.cpp : : : [ requires int128 cxx11_constexpr cxx11_user_defined_literals ] ] + [ run helper_macros_test.cpp ] + [ compile pragma_message_test.cpp ] + [ compile header_deprecated_test.cpp ] ; obj has_clang_implicit_fallthrough : cmd_line_check.cpp : @@ -104,3 +114,7 @@ obj has_clang_implicit_fallthrough : cmd_line_check.cpp : explicit has_clang_implicit_fallthrough ; +exe config_info_travis : config_info.cpp ; +install config_info_travis_install : config_info_travis : . ; +explicit config_info_travis_install ; +explicit config_info_travis ; diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index d76b6cf3..ae3457c2 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 Fri Oct 14 20:08:50 2016 +# This file was automatically generated on Wed Apr 18 20:03:40 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -31,6 +31,9 @@ test-suite "BOOST_HAS_BETHREADS" : test-suite "BOOST_HAS_CLOCK_GETTIME" : [ run ../has_clock_gettime_pass.cpp ] [ compile-fail ../has_clock_gettime_fail.cpp ] ; +test-suite "BOOST_HAS_PRAGMA_DETECT_MISMATCH" : +[ run ../has_detect_mismatch_pass.cpp ] +[ compile-fail ../has_detect_mismatch_fail.cpp ] ; test-suite "BOOST_HAS_DIRENT_H" : [ run ../has_dirent_h_pass.cpp ] [ compile-fail ../has_dirent_h_fail.cpp ] ; @@ -115,57 +118,6 @@ test-suite "BOOST_HAS_STDINT_H" : test-suite "BOOST_HAS_STLP_USE_FACET" : [ run ../has_stlp_use_facet_pass.cpp ] [ compile-fail ../has_stlp_use_facet_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_ARRAY" : -[ run ../has_tr1_array_pass.cpp ] -[ compile-fail ../has_tr1_array_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_BIND" : -[ run ../has_tr1_bind_pass.cpp ] -[ compile-fail ../has_tr1_bind_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_COMPLEX_OVERLOADS" : -[ run ../has_tr1_complex_over_pass.cpp ] -[ compile-fail ../has_tr1_complex_over_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG" : -[ run ../has_tr1_complex_trig_pass.cpp ] -[ compile-fail ../has_tr1_complex_trig_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_FUNCTION" : -[ run ../has_tr1_function_pass.cpp ] -[ compile-fail ../has_tr1_function_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_HASH" : -[ run ../has_tr1_hash_pass.cpp ] -[ compile-fail ../has_tr1_hash_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_MEM_FN" : -[ run ../has_tr1_mem_fn_pass.cpp ] -[ compile-fail ../has_tr1_mem_fn_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_RANDOM" : -[ run ../has_tr1_random_pass.cpp ] -[ compile-fail ../has_tr1_random_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_REFERENCE_WRAPPER" : -[ run ../has_tr1_ref_wrap_pass.cpp ] -[ compile-fail ../has_tr1_ref_wrap_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_REGEX" : -[ run ../has_tr1_regex_pass.cpp ] -[ compile-fail ../has_tr1_regex_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_RESULT_OF" : -[ run ../has_tr1_result_of_pass.cpp ] -[ compile-fail ../has_tr1_result_of_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_SHARED_PTR" : -[ run ../has_tr1_shared_ptr_pass.cpp ] -[ compile-fail ../has_tr1_shared_ptr_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_TUPLE" : -[ run ../has_tr1_tuple_pass.cpp ] -[ compile-fail ../has_tr1_tuple_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_TYPE_TRAITS" : -[ run ../has_tr1_type_traits_pass.cpp ] -[ compile-fail ../has_tr1_type_traits_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_UNORDERED_MAP" : -[ run ../has_tr1_unordered_map_pass.cpp ] -[ compile-fail ../has_tr1_unordered_map_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_UNORDERED_SET" : -[ run ../has_tr1_unordered_set_pass.cpp ] -[ compile-fail ../has_tr1_unordered_set_fail.cpp ] ; -test-suite "BOOST_HAS_TR1_UTILITY" : -[ run ../has_tr1_utility_pass.cpp ] -[ compile-fail ../has_tr1_utility_fail.cpp ] ; test-suite "BOOST_HAS_UNISTD_H" : [ run ../has_unistd_h_pass.cpp ] [ compile-fail ../has_unistd_h_fail.cpp ] ; @@ -241,6 +193,9 @@ test-suite "BOOST_NO_CXX11_ALLOCATOR" : test-suite "BOOST_NO_CXX11_ATOMIC_SMART_PTR" : [ run ../no_cxx11_atomic_sp_pass.cpp ] [ compile-fail ../no_cxx11_atomic_sp_fail.cpp ] ; +test-suite "BOOST_NO_CXX11_DEFAULTED_MOVES" : +[ run ../no_cxx11_defaulted_moves_pass.cpp ] +[ compile-fail ../no_cxx11_defaulted_moves_fail.cpp ] ; test-suite "BOOST_NO_CXX11_FINAL" : [ run ../no_cxx11_final_pass.cpp ] [ compile-fail ../no_cxx11_final_fail.cpp ] ; @@ -310,9 +265,15 @@ test-suite "BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS" : test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" : [ run ../no_cxx11_numeric_limits_pass.cpp ] [ compile-fail ../no_cxx11_numeric_limits_fail.cpp ] ; +test-suite "BOOST_NO_CXX11_POINTER_TRAITS" : +[ run ../no_cxx11_pointer_traits_pass.cpp ] +[ compile-fail ../no_cxx11_pointer_traits_fail.cpp ] ; test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" : [ run ../no_cxx11_ref_qualifiers_pass.cpp ] [ compile-fail ../no_cxx11_ref_qualifiers_fail.cpp ] ; +test-suite "BOOST_NO_CXX11_SFINAE_EXPR" : +[ run ../no_cxx11_sfinae_expr_pass.cpp ] +[ compile-fail ../no_cxx11_sfinae_expr_fail.cpp ] ; test-suite "BOOST_NO_CXX11_SMART_PTR" : [ run ../no_cxx11_smart_ptr_pass.cpp ] [ compile-fail ../no_cxx11_smart_ptr_fail.cpp ] ; @@ -355,12 +316,42 @@ test-suite "BOOST_NO_CXX14_AGGREGATE_NSDMI" : test-suite "BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION" : [ run ../no_cxx14_return_type_ded_pass.cpp ] [ compile-fail ../no_cxx14_return_type_ded_fail.cpp ] ; +test-suite "BOOST_NO_CXX14_STD_EXCHANGE" : +[ run ../no_cxx14_std_exchange_pass.cpp ] +[ compile-fail ../no_cxx14_std_exchange_fail.cpp ] ; test-suite "BOOST_NO_CXX14_VARIABLE_TEMPLATES" : [ run ../no_cxx14_var_templ_pass.cpp ] [ compile-fail ../no_cxx14_var_templ_fail.cpp ] ; +test-suite "BOOST_NO_CXX17_FOLD_EXPRESSIONS" : +[ run ../no_cxx17_fold_expressions_pass.cpp ] +[ compile-fail ../no_cxx17_fold_expressions_fail.cpp ] ; +test-suite "BOOST_NO_CXX17_IF_CONSTEXPR" : +[ run ../no_cxx17_if_constexpr_pass.cpp ] +[ compile-fail ../no_cxx17_if_constexpr_fail.cpp ] ; +test-suite "BOOST_NO_CXX17_INLINE_VARIABLES" : +[ run ../no_cxx17_inline_variables_pass.cpp ] +[ compile-fail ../no_cxx17_inline_variables_fail.cpp ] ; +test-suite "BOOST_NO_CXX17_ITERATOR_TRAITS" : +[ run ../no_cxx17_iterator_traits_pass.cpp ] +[ compile-fail ../no_cxx17_iterator_traits_fail.cpp ] ; +test-suite "BOOST_NO_CXX17_STD_APPLY" : +[ run ../no_cxx17_std_apply_pass.cpp ] +[ compile-fail ../no_cxx17_std_apply_fail.cpp ] ; 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_CXX17_STRUCTURED_BINDINGS" : +[ run ../no_cxx17_structured_bindings_pass.cpp ] +[ compile-fail ../no_cxx17_structured_bindings_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 ] ; @@ -496,6 +487,9 @@ test-suite "BOOST_NO_CXX11_RANGE_BASED_FOR" : test-suite "BOOST_NO_CXX11_RAW_LITERALS" : [ run ../no_raw_literals_pass.cpp ] [ compile-fail ../no_raw_literals_fail.cpp ] ; +test-suite "BOOST_NO_RESTRICT_REFERENCES" : +[ run ../no_restrict_references_pass.cpp ] +[ compile-fail ../no_restrict_references_fail.cpp ] ; test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : [ run ../no_ret_det_pass.cpp ] [ compile-fail ../no_ret_det_fail.cpp ] ; diff --git a/test/boost_has_detect_mismatch.ipp b/test/boost_has_detect_mismatch.ipp new file mode 100644 index 00000000..6430dd46 --- /dev/null +++ b/test/boost_has_detect_mismatch.ipp @@ -0,0 +1,25 @@ +// (C) Copyright John Maddock 2018. +// 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_HAS_PRAGMA_DETECT_MISMATCH +// TITLE: detect_mismatch pragma +// DESCRIPTION: The compiler supports #pragma detect_mismatch + +#include + + +namespace boost_has_pragma_detect_mismatch { + +# pragma detect_mismatch("Boost_Config", "1") + +int test() +{ + return 0; +} + +} + 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_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; } diff --git a/test/boost_has_part_alloc.ipp b/test/boost_has_part_alloc.ipp index fb4bf516..fac5fed4 100644 --- a/test/boost_has_part_alloc.ipp +++ b/test/boost_has_part_alloc.ipp @@ -28,6 +28,7 @@ template int test_allocator(const T& i) { typedef std::allocator alloc1_t; +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) typedef typename alloc1_t::size_type size_type; typedef typename alloc1_t::difference_type difference_type BOOST_UNUSED_ATTRIBUTE; typedef typename alloc1_t::pointer pointer; @@ -35,9 +36,10 @@ int test_allocator(const T& i) typedef typename alloc1_t::reference reference; typedef typename alloc1_t::const_reference const_reference; typedef typename alloc1_t::value_type value_type BOOST_UNUSED_ATTRIBUTE; - +#endif alloc1_t a1; - + (void)i; +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) pointer p = a1.allocate(1); const_pointer cp = p; a1.construct(p,i); @@ -49,7 +51,7 @@ int test_allocator(const T& i) if(cp != a1.address(cr)) return -1; a1.destroy(p); a1.deallocate(p,1); - +#endif return 0; } diff --git a/test/boost_has_tr1_array.ipp b/test/boost_has_tr1_array.ipp deleted file mode 100644 index 5293dd8f..00000000 --- a/test/boost_has_tr1_array.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_ARRAY -// TITLE: std::tr1::array -// DESCRIPTION: The std lib has a tr1-conforming array library. - -#include - -namespace boost_has_tr1_array{ - -using std::tr1::array; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_bind.ipp b/test/boost_has_tr1_bind.ipp deleted file mode 100644 index b3a6d181..00000000 --- a/test/boost_has_tr1_bind.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_BIND -// TITLE: std::tr1::bind -// DESCRIPTION: The std lib has a tr1-conforming bind template function. - -#include - -namespace boost_has_tr1_bind{ - -using std::tr1::bind; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_complex_over.ipp b/test/boost_has_tr1_complex_over.ipp deleted file mode 100644 index d7b880d7..00000000 --- a/test/boost_has_tr1_complex_over.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_COMPLEX_OVERLOADS -// TITLE: std::complex overloads -// DESCRIPTION: The std lib has a tr1-conforming set of std::complex overloads. - -#include - -namespace boost_has_tr1_complex_overloads{ - - -int test() -{ - std::arg(0); - std::conj(0.0); - return 0; -} - -} diff --git a/test/boost_has_tr1_complex_trig.ipp b/test/boost_has_tr1_complex_trig.ipp deleted file mode 100644 index bbd9f8cf..00000000 --- a/test/boost_has_tr1_complex_trig.ipp +++ /dev/null @@ -1,30 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_COMPLEX_INVERSE_TRIG -// TITLE: std::complex inverse trig functions -// DESCRIPTION: The std lib has a tr1-conforming set of std::complex inverse trig functions. - -#include - -namespace boost_has_tr1_complex_inverse_trig{ - - -int test() -{ - std::complex cd; - std::asin(cd); - std::acos(cd); - std::atan(cd); - std::asinh(cd); - std::acosh(cd); - std::atanh(cd); - std::fabs(cd); - return 0; -} - -} diff --git a/test/boost_has_tr1_function.ipp b/test/boost_has_tr1_function.ipp deleted file mode 100644 index ae4af295..00000000 --- a/test/boost_has_tr1_function.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_FUNCTION -// TITLE: std::tr1::function -// DESCRIPTION: The std lib has a tr1-conforming function template class. - -#include - -namespace boost_has_tr1_function{ - -using std::tr1::function; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_hash.ipp b/test/boost_has_tr1_hash.ipp deleted file mode 100644 index 3adc2ab1..00000000 --- a/test/boost_has_tr1_hash.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_HASH -// TITLE: std::tr1::hash -// DESCRIPTION: The std lib has a tr1-conforming hash function library. - -#include - -namespace boost_has_tr1_hash{ - -using std::tr1::hash; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_mem_fn.ipp b/test/boost_has_tr1_mem_fn.ipp deleted file mode 100644 index d5da8937..00000000 --- a/test/boost_has_tr1_mem_fn.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_MEM_FN -// TITLE: std::tr1::mem_fn -// DESCRIPTION: The std lib has a tr1-conforming mem_fn template function. - -#include - -namespace boost_has_tr1_mem_fn{ - -using std::tr1::mem_fn; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_random.ipp b/test/boost_has_tr1_random.ipp deleted file mode 100644 index ddd88e7d..00000000 --- a/test/boost_has_tr1_random.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_RANDOM -// TITLE: std::tr1::random -// DESCRIPTION: The std lib has a tr1-conforming random numer library. - -#include - -namespace boost_has_tr1_random{ - -using std::tr1::variate_generator; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_ref_wrap.ipp b/test/boost_has_tr1_ref_wrap.ipp deleted file mode 100644 index 76c002cc..00000000 --- a/test/boost_has_tr1_ref_wrap.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_REFERENCE_WRAPPER -// TITLE: std::tr1::reference_wrapper -// DESCRIPTION: The std lib has a tr1-conforming reference_wrapper. - -#include - -namespace boost_has_tr1_reference_wrapper{ - -int test() -{ - int i; - std::tr1::reference_wrapper r = std::tr1::ref(i); - (void)r; - return 0; -} - -} diff --git a/test/boost_has_tr1_regex.ipp b/test/boost_has_tr1_regex.ipp deleted file mode 100644 index 4f11c1e9..00000000 --- a/test/boost_has_tr1_regex.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_REGEX -// TITLE: std::tr1::regex -// DESCRIPTION: The std lib has a tr1-conforming regex library. - -#include - -namespace boost_has_tr1_regex{ - -using std::tr1::regex; - -int test() -{ - return 0; -} - -} - diff --git a/test/boost_has_tr1_result_of.ipp b/test/boost_has_tr1_result_of.ipp deleted file mode 100644 index d578e9f9..00000000 --- a/test/boost_has_tr1_result_of.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_RESULT_OF -// TITLE: std::tr1::result_of -// DESCRIPTION: The std lib has a tr1-conforming result_of template. - -#include - -namespace boost_has_tr1_result_of{ - -typedef std::tr1::result_of r; -typedef r::type rr; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_shared_ptr.ipp b/test/boost_has_tr1_shared_ptr.ipp deleted file mode 100644 index aea65dc1..00000000 --- a/test/boost_has_tr1_shared_ptr.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_SHARED_PTR -// TITLE: std::tr1::shared_ptr -// DESCRIPTION: The std lib has a tr1-conforming shrared_ptr. - -#include - -namespace boost_has_tr1_shared_ptr{ - -int test() -{ - int i; - std::tr1::shared_ptr r(new int()); - (void)r; - return 0; -} - -} diff --git a/test/boost_has_tr1_tuple.ipp b/test/boost_has_tr1_tuple.ipp deleted file mode 100644 index 20c72dbd..00000000 --- a/test/boost_has_tr1_tuple.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_TUPLE -// TITLE: std::tr1::tuple -// DESCRIPTION: The std lib has a tr1-conforming tuple library. - -#include - -namespace boost_has_tr1_tuple{ - -using std::tr1::tuple; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_type_traits.ipp b/test/boost_has_tr1_type_traits.ipp deleted file mode 100644 index 6bbcd5e4..00000000 --- a/test/boost_has_tr1_type_traits.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_TYPE_TRAITS -// TITLE: std::tr1::type_traits -// DESCRIPTION: The std lib has a tr1-conforming type traits library. - -#include - -namespace boost_has_tr1_type_traits{ - -using std::tr1::is_void; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_unordered_map.ipp b/test/boost_has_tr1_unordered_map.ipp deleted file mode 100644 index 8336cc71..00000000 --- a/test/boost_has_tr1_unordered_map.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_UNORDERED_MAP -// TITLE: std::tr1::unordered_map -// DESCRIPTION: The std lib has a tr1-conforming unordered map library. - -#include - -namespace boost_has_tr1_unordered_map{ - -using std::tr1::unordered_map; -using std::tr1::unordered_multimap; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_unordered_set.ipp b/test/boost_has_tr1_unordered_set.ipp deleted file mode 100644 index dcc33e5e..00000000 --- a/test/boost_has_tr1_unordered_set.ipp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_UNORDERED_SET -// TITLE: std::tr1::unordered_set -// DESCRIPTION: The std lib has a tr1-conforming unordered set library. - -#include - -namespace boost_has_tr1_unordered_set{ - -using std::tr1::unordered_set; -using std::tr1::unordered_multiset; - -int test() -{ - return 0; -} - -} diff --git a/test/boost_has_tr1_utility.ipp b/test/boost_has_tr1_utility.ipp deleted file mode 100644 index bf97dece..00000000 --- a/test/boost_has_tr1_utility.ipp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright John Maddock 2005. -// 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_HAS_TR1_UTILITY -// TITLE: std::tr1::utility -// DESCRIPTION: The std lib has a tr1-conforming utility header. - -#include - -namespace boost_has_tr1_utility{ - -using std::tr1::get; -using std::tr1::tuple_size; -using std::tr1::tuple_element; - -int test() -{ - 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/test/boost_no_cwchar.ipp b/test/boost_no_cwchar.ipp index d1117018..698dbd63 100644 --- a/test/boost_no_cwchar.ipp +++ b/test/boost_no_cwchar.ipp @@ -19,7 +19,7 @@ int test() wchar_t c1[2] = { 0 }; wchar_t c2[2] = { 0 }; if(wcscmp(c1,c2) || wcslen(c1)) return -1; - wcscpy(c1,c2); + //wcscpy(c1,c2); wcsxfrm(c1,c2,0); return 0; } diff --git a/test/boost_no_cxx11_defaulted_moves.ipp b/test/boost_no_cxx11_defaulted_moves.ipp new file mode 100644 index 00000000..9bf27633 --- /dev/null +++ b/test/boost_no_cxx11_defaulted_moves.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Andrzej Krzemienski 2018 + +// 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 more information. + +// MACRO: BOOST_NO_CXX11_DEFAULTED_MOVES +// TITLE: C++0x defaulting of move constructor/assignment unavailable +// DESCRIPTION: The compiler does not support C++0x defaulting of move constructor/assignment + +namespace boost_no_cxx11_defaulted_moves { + + struct foo { + foo(foo&&) = default; + foo& operator=(foo&&) = default; + }; + + int test() + { + return 0; + } + +} diff --git a/test/boost_no_cxx11_hdr_atomic.ipp b/test/boost_no_cxx11_hdr_atomic.ipp index edede3fc..171dcc3d 100644 --- a/test/boost_no_cxx11_hdr_atomic.ipp +++ b/test/boost_no_cxx11_hdr_atomic.ipp @@ -52,6 +52,8 @@ int test() a1 |= 2; a1 ^= 3; + a2 = 0u; + a3.store(&v); a3.fetch_add(1); a3.fetch_sub(1); diff --git a/test/boost_no_cxx11_hdr_tuple.ipp b/test/boost_no_cxx11_hdr_tuple.ipp index 34bdc4df..6911ee34 100644 --- a/test/boost_no_cxx11_hdr_tuple.ipp +++ b/test/boost_no_cxx11_hdr_tuple.ipp @@ -17,6 +17,7 @@ namespace boost_no_cxx11_hdr_tuple { int test() { std::tuple t(0, 1, 2); + (void)t; return 0; } diff --git a/test/boost_no_cxx11_hdr_type_traits.ipp b/test/boost_no_cxx11_hdr_type_traits.ipp index cf6cdd70..d4862a0c 100644 --- a/test/boost_no_cxx11_hdr_type_traits.ipp +++ b/test/boost_no_cxx11_hdr_type_traits.ipp @@ -45,7 +45,11 @@ int test() using std::is_trivially_copyable; using std::is_standard_layout; using std::is_pod; +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) + // deprecated in C++ 17: using std::is_literal_type; + using std::result_of; +#endif using std::is_empty; using std::is_polymorphic; using std::is_abstract; @@ -99,7 +103,6 @@ int test() using std::conditional; using std::common_type; using std::underlying_type; - using std::result_of; return 0; } diff --git a/test/boost_no_cxx11_pointer_traits.ipp b/test/boost_no_cxx11_pointer_traits.ipp new file mode 100644 index 00000000..3d1bb1f8 --- /dev/null +++ b/test/boost_no_cxx11_pointer_traits.ipp @@ -0,0 +1,37 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX11_POINTER_TRAITS +// TITLE: C++11 lacks a correct std::pointer_traits +// DESCRIPTION: The standard library lacks a working std::pointer_traits. + +#include + +namespace boost_no_cxx11_pointer_traits { + +template +struct pointer { + template + using rebind = pointer; +}; + +template +struct result { }; + +template<> +struct result > { + static const int value = 0; +}; + +int test() +{ + return result >::rebind >::value; +} + +} /* boost_no_cxx11_pointer_traits */ diff --git a/test/boost_no_cxx11_sfinae_expr.ipp b/test/boost_no_cxx11_sfinae_expr.ipp new file mode 100644 index 00000000..79cd7a85 --- /dev/null +++ b/test/boost_no_cxx11_sfinae_expr.ipp @@ -0,0 +1,46 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX11_SFINAE_EXPR +// TITLE: C++11 SFINAE for expressions +// DESCRIPTION: C++11 SFINAE for expressions not supported. + +namespace boost_no_cxx11_sfinae_expr { + +template +struct ignore { + typedef void type; +}; + +template +T& object(); + +template +struct trait { + static const int value = 0; +}; + +template +struct trait())>::type> { }; + +template +struct result { + static const int value = T::value; +}; + +class type { + void operator&() const { } +}; + +int test() +{ + return result >::value; +} + +} /* boost_no_cxx11_sfinae_expr */ diff --git a/test/boost_no_cxx11_thread_local.ipp b/test/boost_no_cxx11_thread_local.ipp index 795ee746..caaed978 100644 --- a/test/boost_no_cxx11_thread_local.ipp +++ b/test/boost_no_cxx11_thread_local.ipp @@ -14,10 +14,22 @@ namespace boost_no_cxx11_thread_local{ +template +int check_local(int n) +{ + static thread_local T s(n, ' '); + static thread_local int size = s.size(); + if(size != n) + { + s = T(n, ' '); + size = n; + } + return size; +} + int test() { - static thread_local std::string local("hello"); - return 0; + return check_local(5) == 5 ? 0 : 1; } } diff --git a/test/boost_no_cxx14_constexpr.ipp b/test/boost_no_cxx14_constexpr.ipp index 5dd43dfa..cc655270 100644 --- a/test/boost_no_cxx14_constexpr.ipp +++ b/test/boost_no_cxx14_constexpr.ipp @@ -1,5 +1,5 @@ -// (C) Copyright Kohei Takahashi 2014 +// (C) Copyright Kohei Takahashi 2014,2016 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file @@ -17,6 +17,15 @@ namespace boost_no_cxx14_constexpr namespace detail { template struct void_ { typedef void type; }; + + struct non_tmpl + { + constexpr int foo() const { return 1; } + constexpr int foo() { return 0; } + }; + + template + struct tmpl : non_tmpl { }; } // Test relaxed constexpr with dependent type; for more details, see comment of @@ -27,6 +36,17 @@ constexpr typename detail::void_::type decrement(T &value) --value; } +constexpr int non_cv_member(detail::non_tmpl x) +{ + return x.foo(); +} + +template +constexpr int non_cv_member(detail::tmpl x) +{ + return x.foo(); +} + constexpr int zero() { int ret = 1; @@ -34,9 +54,18 @@ constexpr int zero() return ret; } +template struct compile_time_value +{ + static constexpr int value = v; +}; + int test() { - return zero(); + return compile_time_value< + zero() + + non_cv_member(detail::non_tmpl()) + + non_cv_member(detail::tmpl()) + >::value; } } diff --git a/test/boost_no_cxx14_std_exchange.ipp b/test/boost_no_cxx14_std_exchange.ipp new file mode 100644 index 00000000..111abd9c --- /dev/null +++ b/test/boost_no_cxx14_std_exchange.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Oliver Kowalke 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CXX14_STD_EXCHANGE +// TITLE: apply +// DESCRIPTION: The compiler supports the std::exchange() function. + +#include + +namespace boost_no_cxx14_std_exchange { + +int test() { + int * i = new int( 1); + int * j = std::exchange( i, nullptr); + delete j; + return 0; +} + +} diff --git a/test/boost_no_cxx17_fold_expressions.ipp b/test/boost_no_cxx17_fold_expressions.ipp new file mode 100644 index 00000000..7566a066 --- /dev/null +++ b/test/boost_no_cxx17_fold_expressions.ipp @@ -0,0 +1,27 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX17_FOLD_EXPRESSIONS +// TITLE: C++17 fold expressions +// DESCRIPTION: C++17 fold expressions are not supported. + +namespace boost_no_cxx17_fold_expressions { + +template +auto sum(Args&&... args) +{ + return (args + ... + 0); +} + +int test() +{ + return sum(1, -1, 1, 1, -1, -1); +} + +} /* boost_no_cxx17_fold_expressions */ diff --git a/test/boost_no_cxx17_if_constexpr.ipp b/test/boost_no_cxx17_if_constexpr.ipp new file mode 100644 index 00000000..3392ee73 --- /dev/null +++ b/test/boost_no_cxx17_if_constexpr.ipp @@ -0,0 +1,45 @@ +/* +Copyright 2018 T. Zachary Laine +(whatwasthataddress@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX17_IF_CONSTEXPR +// TITLE: C++17 if constexpr +// DESCRIPTION: C++17 if constexpr are not supported. + +namespace boost_no_cxx17_if_constexpr { + +template +struct same +{ + static constexpr bool value = false; +}; + +template +struct same +{ + static constexpr bool value = true; +}; + +int test() +{ + if constexpr (true) { + if constexpr (1 != 0) { + if constexpr (same::value) { + static_assert(!same::value, ""); + return 1; + } else if constexpr (false) { + return 1; + } else { + return 0; + } + } + } + return 1; +} + +} diff --git a/test/boost_no_cxx17_inline_variables.ipp b/test/boost_no_cxx17_inline_variables.ipp new file mode 100644 index 00000000..d144ed9a --- /dev/null +++ b/test/boost_no_cxx17_inline_variables.ipp @@ -0,0 +1,27 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX17_INLINE_VARIABLES +// TITLE: C++17 inline variables +// DESCRIPTION: C++17 inline variables are not supported. + +namespace boost_no_cxx17_inline_variables { + +inline const int Value = 1; + +struct Type { + static inline const int value = 1; +}; + +int test() +{ + return Type::value - Value; +} + +} /* boost_no_cxx17_inline_variables */ diff --git a/test/boost_no_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp new file mode 100644 index 00000000..cef88c05 --- /dev/null +++ b/test/boost_no_cxx17_iterator_traits.ipp @@ -0,0 +1,54 @@ +// Copyright (c) Andrey Semashev 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_CXX17_ITERATOR_TRAITS +// TITLE: C++17 std::iterator_traits +// DESCRIPTION: The compiler does not support SFINAE-friendly std::iterator_traits defined in C++17. + +#include + +namespace boost_no_cxx17_iterator_traits { + +struct iterator +{ + typedef std::random_access_iterator_tag iterator_category; + typedef char value_type; + typedef std::ptrdiff_t difference_type; + typedef char* pointer; + typedef char& reference; + + reference operator*()const; + iterator operator++(); +}; + +struct non_iterator {}; + +template< typename T > +struct void_type { typedef void type; }; + +template< typename Traits, typename Void = void > +struct has_iterator_category +{ + enum { value = false }; +}; + +template< typename Traits > +struct has_iterator_category< Traits, typename void_type< typename Traits::iterator_category >::type > +{ + enum { value = true }; +}; + +int test() +{ + static_assert(has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value, "has_iterator_category failed"); + + static_assert(!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value, "has_iterator_category negative check failed"); + + return 0; +} + +} diff --git a/test/boost_no_cxx17_std_apply.ipp b/test/boost_no_cxx17_std_apply.ipp new file mode 100644 index 00000000..c657c039 --- /dev/null +++ b/test/boost_no_cxx17_std_apply.ipp @@ -0,0 +1,28 @@ +// (C) Copyright Oliver Kowalke 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CXX17_STD_APPLY +// TITLE: apply +// DESCRIPTION: The compiler supports the std::apply() function. + +#include +#include + +namespace boost_no_cxx17_std_apply { + +int foo( int i, int j) { + return i + j; +} + +int test() { + int i = 1, j = 2; + std::apply( foo, std::make_tuple( i, j) ); + return 0; +} + +} + diff --git a/test/boost_no_cxx17_std_invoke.ipp b/test/boost_no_cxx17_std_invoke.ipp index 77f20e6c..7de7e6ae 100644 --- a/test/boost_no_cxx17_std_invoke.ipp +++ b/test/boost_no_cxx17_std_invoke.ipp @@ -19,7 +19,7 @@ int foo( int i, int j) { int test() { int i = 1, j = 2; - std::invoke( foo, i, j); + typename std::invoke_result::type t = std::invoke( foo, i, j); return 0; } diff --git a/test/boost_no_cxx17_structured_bindings.ipp b/test/boost_no_cxx17_structured_bindings.ipp new file mode 100644 index 00000000..c5c72598 --- /dev/null +++ b/test/boost_no_cxx17_structured_bindings.ipp @@ -0,0 +1,36 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX17_STRUCTURED_BINDINGS +// TITLE: C++17 structured bindings +// DESCRIPTION: C++17 structured bindings are not supported. + +#include + +namespace boost_no_cxx17_structured_bindings { + +struct P { + int x; + int y; +}; + +int test() +{ + auto [c, d] = std::make_tuple(1, 2); + if (c != 1 || d != 2) { + return 1; + } + auto [a, b] = P{1, 2}; + if (a != 1 || b != 2) { + return 1; + } + return 0; +} + +} /* boost_no_cxx17_structured_bindings */ 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/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) diff --git a/test/boost_no_restrict_references.ipp b/test/boost_no_restrict_references.ipp new file mode 100644 index 00000000..548984d2 --- /dev/null +++ b/test/boost_no_restrict_references.ipp @@ -0,0 +1,47 @@ +// (C) Copyright Beman Dawes 2009 + +// 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 more information. + +// MACRO: BOOST_NO_RESTRICT_REFERENCES +// TITLE: We cannot apply BOOST_RESTRICT to a reference type. +// DESCRIPTION: We cannot apply BOOST_RESTRICT to a reference type + +#include + +namespace boost_no_restrict_references { + +#ifdef _MSC_VER +#pragma warning(error:4227) +#endif + + +void sum2(int (& BOOST_RESTRICT a)[4], int (& BOOST_RESTRICT b)[4], int (&c)[4], int (&d)[4]) { + int i; + for (i = 0; i < 4; i++) { + a[i] = b[i] + c[i]; + c[i] = b[i] + d[i]; + } +} + +int test() +{ + int a[4] = { 1, 2, 3, 4 }; + int b[4] = { 3, 4, 5, 6 }; + int c[4] = { 0, 1, 3, 5 }; + int d[4] = { 2, 4, 6, 8 }; + + sum2(a, b, c, d); + + return 0; +} + +#ifdef _MSC_VER +#pragma warning(default:4227) +#endif + + +} diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp index d3badbd5..920bf1de 100644 --- a/test/boost_no_std_allocator.ipp +++ b/test/boost_no_std_allocator.ipp @@ -28,20 +28,34 @@ template int test_allocator(const T& i) { typedef std::allocator alloc1_t; +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) + // stuff deprecated in C++17: typedef typename alloc1_t::size_type size_type; typedef typename alloc1_t::difference_type difference_type BOOST_UNUSED_ATTRIBUTE; typedef typename alloc1_t::pointer pointer; typedef typename alloc1_t::const_pointer const_pointer; typedef typename alloc1_t::reference reference; typedef typename alloc1_t::const_reference const_reference; + #endif typedef typename alloc1_t::value_type value_type BOOST_UNUSED_ATTRIBUTE; - typedef typename alloc1_t::BOOST_NESTED_TEMPLATE rebind binder_t; - typedef typename binder_t::other alloc2_t; - alloc1_t a1; alloc1_t a2(a1); + (void)i; +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) + // stuff deprecated in C++17: + typedef typename alloc1_t::BOOST_NESTED_TEMPLATE rebind binder_t; + typedef typename binder_t::other alloc2_t; + alloc2_t a3(a1); + // this chokes early versions of the MSL library + // and isn't currently required by anything in boost + // so don't test for now... + // a3 = a2; + (void)a2; +#endif + +#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) pointer p = a1.allocate(1); const_pointer cp = p; a1.construct(p,i); @@ -52,15 +66,11 @@ int test_allocator(const T& i) if(p != a1.address(r)) return -1; if(cp != a1.address(cr)) return -1; a1.destroy(p); +#else + auto p = a1.allocate(1); +#endif a1.deallocate(p,1); - alloc2_t a3(a1); - // this chokes early versions of the MSL library - // and isn't currently required by anything in boost - // so don't test for now... - // a3 = a2; - - (void)a2; return 0; } diff --git a/test/config_build_check.cpp b/test/config_build_check.cpp index b95d1c5e..480e93ef 100644 --- a/test/config_build_check.cpp +++ b/test/config_build_check.cpp @@ -6,6 +6,8 @@ // See http://www.boost.org/libs/config for the most recent version.// // Revision $Id$ // +// We include this as it contains some workarounds we may need (like a declaration for ::gets to get clang building): +#include # include "../test/boost_has_int128.ipp" # include "../test/boost_no_constexpr.ipp" diff --git a/test/config_info.cpp b/test/config_info.cpp index 8bb1e441..b5629772 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -143,18 +143,53 @@ void print_compiler_macros() PRINT_MACRO(_WCHAR_T_DEFINED); #endif // MSVC macros: + PRINT_MACRO(_ALIGNED_NEW_SUPPORTED); + PRINT_MACRO(__ATOM__); + PRINT_MACRO(__AVX__); + PRINT_MACRO(__AVX2__); + PRINT_MACRO(_CHAR_UNSIGNED); + PRINT_MACRO(_CLR_VER); + PRINT_MACRO(_CONTROL_FLOW_GUARD); + PRINT_MACRO(__cplusplus_cli); + PRINT_MACRO(__cplusplus_winrt); PRINT_MACRO(_CPPRTTI); + PRINT_MACRO(_CPPUNWIND); PRINT_MACRO(_DLL); + PRINT_MACRO(_INLINE_VARIABLES_SUPPORTED); + PRINT_MACRO(_ISO_VOLATILE); + PRINT_MACRO(_M_AMD64); + PRINT_MACRO(_M_ARM); + PRINT_MACRO(_M_ARM_ARMV7VE); + PRINT_MACRO(_M_ARM_FP); + PRINT_MACRO(_M_ARM64); + PRINT_MACRO(_M_CEE); + PRINT_MACRO(_M_CEE_PURE); + PRINT_MACRO(_M_CEE_SAFE); + PRINT_MACRO(_M_FP_EXCEPT); + PRINT_MACRO(_M_FP_FAST); + PRINT_MACRO(_M_FP_PRECISE); + PRINT_MACRO(_M_FP_STRICT); + PRINT_MACRO(_M_IX86); + PRINT_MACRO(_M_IX86_FP); + PRINT_MACRO(_M_X64); PRINT_MACRO(_M_ALPHA); PRINT_MACRO(_M_MPPC); PRINT_MACRO(_M_MRX000); PRINT_MACRO(_M_PPC); + PRINT_MACRO(_MANAGED); + PRINT_MACRO(_MSC_BUILD); PRINT_MACRO(_MFC_VER); PRINT_MACRO(_MSC_EXTENSIONS); PRINT_MACRO(_MSC_VER); PRINT_MACRO(_MSC_FULL_VER); + PRINT_MACRO(_MSVC_LANG); + PRINT_MACRO(_MSVC_WARNING_LEVEL); + PRINT_MACRO(__MSVC_RUNTIME_CHECKS); PRINT_MACRO(_MT); PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED); + PRINT_MACRO(_NOEXCEPT_TYPES_SUPPORTED); + PRINT_MACRO(_OPENMP); + PRINT_MACRO(_PREFAST_); // GNUC options: PRINT_MACRO(__GNUC__); PRINT_MACRO(__GNUC_MINOR__); @@ -193,6 +228,32 @@ void print_compiler_macros() PRINT_MACRO(__CYGWIN__); PRINT_MACRO(__MINGW32__); PRINT_MACRO(__GXX_RTTI); + PRINT_MACRO(__alpha__); + PRINT_MACRO(__amd64__); + PRINT_MACRO(__arm__); + PRINT_MACRO(__aarch64__); + PRINT_MACRO(__bfin); + PRINT_MACRO(__convex__); + PRINT_MACRO(__epiphany__); + PRINT_MACRO(__hppa__); + PRINT_MACRO(__ia64__); + PRINT_MACRO(__IA64); + PRINT_MACRO(__IA64__); + PRINT_MACRO(__m68k__); + PRINT_MACRO(__mips__); + PRINT_MACRO(__powerpc); + PRINT_MACRO(__powerpc__); + PRINT_MACRO(__powerpc64__); + PRINT_MACRO(__POWERPC__); + PRINT_MACRO(__ppc__); + PRINT_MACRO(__ppc64__); + PRINT_MACRO(__PPC__); + PRINT_MACRO(__PPC64__); + PRINT_MACRO(_ARCH_PPC); + PRINT_MACRO(_ARCH_PPC64); + PRINT_MACRO(__sh__); + PRINT_MACRO(__370__); + PRINT_MACRO(__THW_370__); // HP aCC: PRINT_MACRO(__HP_aCC); PRINT_MACRO(_HPACC_); @@ -313,6 +374,13 @@ void print_compiler_macros() PRINT_MACRO(_FASTMD); PRINT_MACRO(_MAXVL); + // clang options: + PRINT_MACRO(__clang__); + PRINT_MACRO(__clang_major__); + PRINT_MACRO(__clang_minor__); + PRINT_MACRO(__clang_version__); + PRINT_MACRO(__clang_patchlevel__); + // misc compilers not covered so far: PRINT_MACRO(__USLC__); PRINT_MACRO(__DECCXX); @@ -337,6 +405,10 @@ void print_compiler_macros() PRINT_MACRO(__CUDACC_VER_MINOR__); PRINT_MACRO(__CUDACC_VER_BUILD__); PRINT_MACRO(__CUDACC_VER__); + + // Android: + PRINT_MACRO(ANDROID); + PRINT_MACRO(__ANDROID__); } void print_stdlib_macros() @@ -569,10 +641,33 @@ void print_stdlib_macros() #endif // Dinkumware options: PRINT_MACRO(_CPPLIB_VER); + PRINT_MACRO(_MSVC_STL_VERSION); // VS2017 15.5+ + PRINT_MACRO(_MSVC_STL_UPDATE); // VS2017 15.5+ PRINT_MACRO(_GLOBAL_USING); PRINT_MACRO(_HAS_EXCEPTIONS); PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND); PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING); + // https://blogs.msdn.microsoft.com/vcblog/2016/08/12/stl-fixes-in-vs-2015-update-3/ + PRINT_MACRO(_HAS_CXX17); + PRINT_MACRO(_HAS_AUTO_PTR_ETC); + PRINT_MACRO(_HAS_OLD_IOSTREAMS_MEMBERS); + PRINT_MACRO(_HAS_FUNCTION_ASSIGN); + PRINT_MACRO(_HAS_TR1_NAMESPACE); + PRINT_MACRO(_HAS_IDENTITY_STRUCT); + // VS2017 15.5+ + PRINT_MACRO(_HAS_STATIC_RTTI); + PRINT_MACRO(_HAS_UNEXPECTED); + PRINT_MACRO(_HAS_STD_BYTE); + PRINT_MACRO(_HAS_FUNCTION_ALLOCATOR_SUPPORT); + PRINT_MACRO(_HAS_TR2_SYS_NAMESPACE); + PRINT_MACRO(_ENFORCE_MATCHING_ALLOCATORS); + PRINT_MACRO(_HAS_HAS_UNIQUE_OBJECT_REPRESENTATIONS); + PRINT_MACRO(_HAS_INLINE_VARIABLES); + PRINT_MACRO(_HAS_ALIGNED_NEW); + PRINT_MACRO(_HAS_NOEXCEPT_FUNCTION_TYPES); + PRINT_MACRO(_ITERATOR_DEBUG_LEVEL); + PRINT_MACRO(_HAS_ITERATOR_DEBUGGING); + PRINT_MACRO(_ITERATOR_DEBUG_ARRAY_OVERLOADS); // Libc++: PRINT_MACRO(_LIBCPP_VERSION); // STLPort and generic SGI STL options: @@ -752,6 +847,7 @@ void print_stdlib_macros() PRINT_MACRO(_GLIBCXX_MEM_LIMITS); PRINT_MACRO(_GLIBCXX_HOSTED); PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS); + PRINT_MACRO(_GLIBCXX_RELEASE); // Modena C++ standard library PRINT_MACRO(MSIPL_ANSI_HEADER); @@ -958,6 +1054,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_HAS_NL_TYPES_H); PRINT_MACRO(BOOST_HAS_NRVO); PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR); + PRINT_MACRO(BOOST_HAS_PRAGMA_DETECT_MISMATCH); PRINT_MACRO(BOOST_HAS_PTHREADS); PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP); PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE); @@ -970,23 +1067,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_HAS_STATIC_ASSERT); PRINT_MACRO(BOOST_HAS_STDINT_H); PRINT_MACRO(BOOST_HAS_STLP_USE_FACET); - PRINT_MACRO(BOOST_HAS_TR1_ARRAY); - PRINT_MACRO(BOOST_HAS_TR1_BIND); - PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG); - PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS); - PRINT_MACRO(BOOST_HAS_TR1_FUNCTION); - PRINT_MACRO(BOOST_HAS_TR1_HASH); - PRINT_MACRO(BOOST_HAS_TR1_MEM_FN); - PRINT_MACRO(BOOST_HAS_TR1_RANDOM); - PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER); - PRINT_MACRO(BOOST_HAS_TR1_REGEX); - PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF); - PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR); - PRINT_MACRO(BOOST_HAS_TR1_TUPLE); - PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS); - PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP); - PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET); - PRINT_MACRO(BOOST_HAS_TR1_UTILITY); PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET); PRINT_MACRO(BOOST_HAS_UNISTD_H); PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL); @@ -1015,6 +1095,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE); PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE_N3276); PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS); + PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_MOVES); PRINT_MACRO(BOOST_NO_CXX11_DELETED_FUNCTIONS); PRINT_MACRO(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS); PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE); @@ -1048,11 +1129,13 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS); PRINT_MACRO(BOOST_NO_CXX11_NULLPTR); PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS); + PRINT_MACRO(BOOST_NO_CXX11_POINTER_TRAITS); PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR); PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS); PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS); PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES); PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS); + PRINT_MACRO(BOOST_NO_CXX11_SFINAE_EXPR); PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR); PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT); PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN); @@ -1073,8 +1156,18 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_HDR_SHARED_MUTEX); PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES); PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION); + PRINT_MACRO(BOOST_NO_CXX14_STD_EXCHANGE); PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES); + PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS); + PRINT_MACRO(BOOST_NO_CXX17_IF_CONSTEXPR); + PRINT_MACRO(BOOST_NO_CXX17_INLINE_VARIABLES); + PRINT_MACRO(BOOST_NO_CXX17_ITERATOR_TRAITS); + PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); + PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS); + 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); @@ -1104,6 +1197,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_RESTRICT_REFERENCES); PRINT_MACRO(BOOST_NO_RTTI); PRINT_MACRO(BOOST_NO_SFINAE); PRINT_MACRO(BOOST_NO_SFINAE_EXPR); @@ -1143,12 +1237,12 @@ void print_boost_macros() - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_MSVC); + PRINT_MACRO(BOOST_GCC); + PRINT_MACRO(BOOST_LIBSTDCXX_VERSION); PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0)); PRINT_MACRO(BOOST_CONSTEXPR); @@ -1158,6 +1252,67 @@ void print_boost_macros() PRINT_MACRO(BOOST_FORCEINLINE); PRINT_MACRO(BOOST_NOINLINE); PRINT_MACRO(BOOST_FALLTHROUGH); + PRINT_MACRO(BOOST_MAY_ALIAS); + PRINT_MACRO(BOOST_NO_MAY_ALIAS); +} + +void print_sd6_macros() +{ + // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html + + // C++17: + PRINT_MACRO(__cpp_hex_float); + PRINT_MACRO(__cpp_inline_variables); + PRINT_MACRO(__cpp_aligned_new); + PRINT_MACRO(__cpp_guaranteed_copy_elision); + PRINT_MACRO(__cpp_noexcept_function_type); + PRINT_MACRO(__cpp_fold_expressions); + PRINT_MACRO(__cpp_capture_star_this); + PRINT_MACRO(__cpp_constexpr); + PRINT_MACRO(__cpp_if_constexpr); + PRINT_MACRO(__cpp_range_based_for); + PRINT_MACRO(__cpp_static_assert); + PRINT_MACRO(__cpp_deduction_guides); + PRINT_MACRO(__cpp_nontype_template_parameter_auto); + PRINT_MACRO(__cpp_namespace_attributes); + PRINT_MACRO(__cpp_enumerator_attributes); + PRINT_MACRO(__cpp_inheriting_constructors); + PRINT_MACRO(__cpp_variadic_using); + PRINT_MACRO(__cpp_structured_bindings); + PRINT_MACRO(__cpp_aggregate_bases); + PRINT_MACRO(__cpp_nontype_template_args); + PRINT_MACRO(__cpp_template_template_args); + + // C++14: + PRINT_MACRO(__cpp_binary_literals); + PRINT_MACRO(__cpp_init_captures); + PRINT_MACRO(__cpp_generic_lambdas); + PRINT_MACRO(__cpp_sized_deallocation); + PRINT_MACRO(__cpp_decltype_auto); + PRINT_MACRO(__cpp_return_type_deduction); + PRINT_MACRO(__cpp_aggregate_nsdmi); + PRINT_MACRO(__cpp_variable_templates); + + // C++11: + PRINT_MACRO(__cpp_unicode_characters); + PRINT_MACRO(__cpp_raw_strings); + PRINT_MACRO(__cpp_unicode_literals); + PRINT_MACRO(__cpp_user_defined_literals); + PRINT_MACRO(__cpp_threadsafe_static_init); + PRINT_MACRO(__cpp_lambdas); + PRINT_MACRO(__cpp_decltype); + PRINT_MACRO(__cpp_attributes); + PRINT_MACRO(__cpp_rvalue_references); + PRINT_MACRO(__cpp_variadic_templates); + PRINT_MACRO(__cpp_initializer_lists); + PRINT_MACRO(__cpp_delegating_constructors); + PRINT_MACRO(__cpp_nsdmi); + PRINT_MACRO(__cpp_ref_qualifiers); + PRINT_MACRO(__cpp_alias_templates); + + // C++98: + PRINT_MACRO(__cpp_rtti); + PRINT_MACRO(__cpp_exceptions); } void print_separator() @@ -1177,6 +1332,8 @@ int main() print_platform_macros(); print_separator(); print_boost_macros(); + print_separator(); + print_sd6_macros(); return 0; } diff --git a/test/config_test.cpp b/test/config_test.cpp index a887972d..c7e4e8a6 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Oct 14 20:08:50 2016 +// This file was automatically generated on Wed Apr 18 20:03:40 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -122,6 +122,11 @@ namespace boost_no_cxx11_allocator = empty_boost; #else namespace boost_no_cxx11_atomic_smart_ptr = empty_boost; #endif +#ifndef BOOST_NO_CXX11_DEFAULTED_MOVES +#include "boost_no_cxx11_defaulted_moves.ipp" +#else +namespace boost_no_cxx11_defaulted_moves = empty_boost; +#endif #ifndef BOOST_NO_CXX11_FINAL #include "boost_no_cxx11_final.ipp" #else @@ -237,11 +242,21 @@ namespace boost_no_cxx11_non_public_defaulted_functions = empty_boost; #else namespace boost_no_cxx11_numeric_limits = empty_boost; #endif +#ifndef BOOST_NO_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +namespace boost_no_cxx11_pointer_traits = empty_boost; +#endif #ifndef BOOST_NO_CXX11_REF_QUALIFIERS #include "boost_no_cxx11_ref_qualifiers.ipp" #else namespace boost_no_cxx11_ref_qualifiers = empty_boost; #endif +#ifndef BOOST_NO_CXX11_SFINAE_EXPR +#include "boost_no_cxx11_sfinae_expr.ipp" +#else +namespace boost_no_cxx11_sfinae_expr = empty_boost; +#endif #ifndef BOOST_NO_CXX11_SMART_PTR #include "boost_no_cxx11_smart_ptr.ipp" #else @@ -312,16 +327,66 @@ namespace boost_no_cxx14_aggregate_nsdmi = empty_boost; #else namespace boost_no_cxx14_return_type_deduction = empty_boost; #endif +#ifndef BOOST_NO_CXX14_STD_EXCHANGE +#include "boost_no_cxx14_std_exchange.ipp" +#else +namespace boost_no_cxx14_std_exchange = empty_boost; +#endif #ifndef BOOST_NO_CXX14_VARIABLE_TEMPLATES #include "boost_no_cxx14_var_templ.ipp" #else namespace boost_no_cxx14_variable_templates = empty_boost; #endif +#ifndef BOOST_NO_CXX17_FOLD_EXPRESSIONS +#include "boost_no_cxx17_fold_expressions.ipp" +#else +namespace boost_no_cxx17_fold_expressions = empty_boost; +#endif +#ifndef BOOST_NO_CXX17_IF_CONSTEXPR +#include "boost_no_cxx17_if_constexpr.ipp" +#else +namespace boost_no_cxx17_if_constexpr = empty_boost; +#endif +#ifndef BOOST_NO_CXX17_INLINE_VARIABLES +#include "boost_no_cxx17_inline_variables.ipp" +#else +namespace boost_no_cxx17_inline_variables = empty_boost; +#endif +#ifndef BOOST_NO_CXX17_ITERATOR_TRAITS +#include "boost_no_cxx17_iterator_traits.ipp" +#else +namespace boost_no_cxx17_iterator_traits = empty_boost; +#endif +#ifndef BOOST_NO_CXX17_STD_APPLY +#include "boost_no_cxx17_std_apply.ipp" +#else +namespace boost_no_cxx17_std_apply = empty_boost; +#endif #ifndef BOOST_NO_CXX17_STD_INVOKE #include "boost_no_cxx17_std_invoke.ipp" #else namespace boost_no_cxx17_std_invoke = empty_boost; #endif +#ifndef BOOST_NO_CXX17_STRUCTURED_BINDINGS +#include "boost_no_cxx17_structured_bindings.ipp" +#else +namespace boost_no_cxx17_structured_bindings = 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 @@ -547,6 +612,11 @@ namespace boost_no_cxx11_range_based_for = empty_boost; #else namespace boost_no_cxx11_raw_literals = empty_boost; #endif +#ifndef BOOST_NO_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" +#else +namespace boost_no_restrict_references = empty_boost; +#endif #ifndef BOOST_NO_UNREACHABLE_RETURN_DETECTION #include "boost_no_ret_det.ipp" #else @@ -753,6 +823,11 @@ namespace boost_has_bethreads = empty_boost; #else namespace boost_has_clock_gettime = empty_boost; #endif +#ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH +#include "boost_has_detect_mismatch.ipp" +#else +namespace boost_has_pragma_detect_mismatch = empty_boost; +#endif #ifdef BOOST_HAS_DIRENT_H #include "boost_has_dirent_h.ipp" #else @@ -893,91 +968,6 @@ namespace boost_has_stdint_h = empty_boost; #else namespace boost_has_stlp_use_facet = empty_boost; #endif -#ifdef BOOST_HAS_TR1_ARRAY -#include "boost_has_tr1_array.ipp" -#else -namespace boost_has_tr1_array = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_BIND -#include "boost_has_tr1_bind.ipp" -#else -namespace boost_has_tr1_bind = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_COMPLEX_OVERLOADS -#include "boost_has_tr1_complex_over.ipp" -#else -namespace boost_has_tr1_complex_overloads = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -#include "boost_has_tr1_complex_trig.ipp" -#else -namespace boost_has_tr1_complex_inverse_trig = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_FUNCTION -#include "boost_has_tr1_function.ipp" -#else -namespace boost_has_tr1_function = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_HASH -#include "boost_has_tr1_hash.ipp" -#else -namespace boost_has_tr1_hash = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_MEM_FN -#include "boost_has_tr1_mem_fn.ipp" -#else -namespace boost_has_tr1_mem_fn = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_RANDOM -#include "boost_has_tr1_random.ipp" -#else -namespace boost_has_tr1_random = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_REFERENCE_WRAPPER -#include "boost_has_tr1_ref_wrap.ipp" -#else -namespace boost_has_tr1_reference_wrapper = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_REGEX -#include "boost_has_tr1_regex.ipp" -#else -namespace boost_has_tr1_regex = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_RESULT_OF -#include "boost_has_tr1_result_of.ipp" -#else -namespace boost_has_tr1_result_of = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_SHARED_PTR -#include "boost_has_tr1_shared_ptr.ipp" -#else -namespace boost_has_tr1_shared_ptr = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_TUPLE -#include "boost_has_tr1_tuple.ipp" -#else -namespace boost_has_tr1_tuple = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_TYPE_TRAITS -#include "boost_has_tr1_type_traits.ipp" -#else -namespace boost_has_tr1_type_traits = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_UNORDERED_MAP -#include "boost_has_tr1_unordered_map.ipp" -#else -namespace boost_has_tr1_unordered_map = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_UNORDERED_SET -#include "boost_has_tr1_unordered_set.ipp" -#else -namespace boost_has_tr1_unordered_set = empty_boost; -#endif -#ifdef BOOST_HAS_TR1_UTILITY -#include "boost_has_tr1_utility.ipp" -#else -namespace boost_has_tr1_utility = empty_boost; -#endif #ifdef BOOST_HAS_UNISTD_H #include "boost_has_unistd_h.ipp" #else @@ -1021,6 +1011,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_HAS_CLOCK_GETTIME at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_has_pragma_detect_mismatch::test()) + { + std::cerr << "Failed test for BOOST_HAS_PRAGMA_DETECT_MISMATCH at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_has_dirent_h::test()) { std::cerr << "Failed test for BOOST_HAS_DIRENT_H at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1161,91 +1156,6 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_HAS_STLP_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_has_tr1_array::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_bind::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_BIND at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_complex_overloads::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_COMPLEX_OVERLOADS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_complex_inverse_trig::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_function::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_FUNCTION at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_hash::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_HASH at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_mem_fn::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_MEM_FN at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_random::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_RANDOM at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_reference_wrapper::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_REFERENCE_WRAPPER at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_regex::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_REGEX at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_result_of::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_RESULT_OF at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_shared_ptr::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_SHARED_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_tuple::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_type_traits::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_unordered_map::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_UNORDERED_MAP at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_unordered_set::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_UNORDERED_SET at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_has_tr1_utility::test()) - { - std::cerr << "Failed test for BOOST_HAS_TR1_UTILITY at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_has_unistd_h::test()) { std::cerr << "Failed test for BOOST_HAS_UNISTD_H at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1371,6 +1281,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_ATOMIC_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx11_defaulted_moves::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX11_DEFAULTED_MOVES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_final::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_FINAL at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1486,11 +1401,21 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx11_pointer_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX11_POINTER_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_ref_qualifiers::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx11_sfinae_expr::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX11_SFINAE_EXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_smart_ptr::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1561,16 +1486,66 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx14_std_exchange::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX14_STD_EXCHANGE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx14_variable_templates::test()) { std::cerr << "Failed test for BOOST_NO_CXX14_VARIABLE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx17_fold_expressions::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_FOLD_EXPRESSIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx17_if_constexpr::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_IF_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx17_inline_variables::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_INLINE_VARIABLES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx17_iterator_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_ITERATOR_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cxx17_std_apply::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_STD_APPLY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx17_std_invoke::test()) { std::cerr << "Failed test for BOOST_NO_CXX17_STD_INVOKE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx17_structured_bindings::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX17_STRUCTURED_BINDINGS 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; @@ -1796,6 +1771,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_RAW_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_restrict_references::test()) + { + std::cerr << "Failed test for BOOST_NO_RESTRICT_REFERENCES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_unreachable_return_detection::test()) { std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/has_detect_mismatch_fail.cpp b/test/has_detect_mismatch_fail.cpp new file mode 100644 index 00000000..5a544b13 --- /dev/null +++ b/test/has_detect_mismatch_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Apr 18 20:03:40 2018 +// 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_HAS_PRAGMA_DETECT_MISMATCH +// This file should not compile, if it does then +// BOOST_HAS_PRAGMA_DETECT_MISMATCH should be defined. +// See file boost_has_detect_mismatch.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_HAS_PRAGMA_DETECT_MISMATCH +#include "boost_has_detect_mismatch.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_pragma_detect_mismatch::test(); +} + diff --git a/test/has_detect_mismatch_pass.cpp b/test/has_detect_mismatch_pass.cpp new file mode 100644 index 00000000..ea47fb88 --- /dev/null +++ b/test/has_detect_mismatch_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Apr 18 20:03:40 2018 +// 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_HAS_PRAGMA_DETECT_MISMATCH +// This file should compile, if it does not then +// BOOST_HAS_PRAGMA_DETECT_MISMATCH should not be defined. +// See file boost_has_detect_mismatch.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_HAS_PRAGMA_DETECT_MISMATCH +#include "boost_has_detect_mismatch.ipp" +#else +namespace boost_has_pragma_detect_mismatch = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_pragma_detect_mismatch::test(); +} + diff --git a/test/has_tr1_complex_over_fail.cpp b/test/has_tr1_complex_over_fail.cpp deleted file mode 100644 index 1f282190..00000000 --- a/test/has_tr1_complex_over_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_COMPLEX_OVERLOADS -// This file should not compile, if it does then -// BOOST_HAS_TR1_COMPLEX_OVERLOADS should be defined. -// See file boost_has_tr1_complex_over.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS -#include "boost_has_tr1_complex_over.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_complex_overloads::test(); -} - diff --git a/test/has_tr1_complex_over_pass.cpp b/test/has_tr1_complex_over_pass.cpp deleted file mode 100644 index 5535cdad..00000000 --- a/test/has_tr1_complex_over_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_COMPLEX_OVERLOADS -// This file should compile, if it does not then -// BOOST_HAS_TR1_COMPLEX_OVERLOADS should not be defined. -// See file boost_has_tr1_complex_over.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_COMPLEX_OVERLOADS -#include "boost_has_tr1_complex_over.ipp" -#else -namespace boost_has_tr1_complex_overloads = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_complex_overloads::test(); -} - diff --git a/test/has_tr1_complex_trig_fail.cpp b/test/has_tr1_complex_trig_fail.cpp deleted file mode 100644 index 3c1ce163..00000000 --- a/test/has_tr1_complex_trig_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_COMPLEX_INVERSE_TRIG -// This file should not compile, if it does then -// BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG should be defined. -// See file boost_has_tr1_complex_trig.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -#include "boost_has_tr1_complex_trig.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_complex_inverse_trig::test(); -} - diff --git a/test/has_tr1_complex_trig_pass.cpp b/test/has_tr1_complex_trig_pass.cpp deleted file mode 100644 index 9aca24b4..00000000 --- a/test/has_tr1_complex_trig_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_COMPLEX_INVERSE_TRIG -// This file should compile, if it does not then -// BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG should not be defined. -// See file boost_has_tr1_complex_trig.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -#include "boost_has_tr1_complex_trig.ipp" -#else -namespace boost_has_tr1_complex_inverse_trig = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_complex_inverse_trig::test(); -} - diff --git a/test/has_tr1_random_fail.cpp b/test/has_tr1_random_fail.cpp deleted file mode 100644 index 15e5a3a8..00000000 --- a/test/has_tr1_random_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_RANDOM -// This file should not compile, if it does then -// BOOST_HAS_TR1_RANDOM should be defined. -// See file boost_has_tr1_random.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_RANDOM -#include "boost_has_tr1_random.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_random::test(); -} - diff --git a/test/has_tr1_random_pass.cpp b/test/has_tr1_random_pass.cpp deleted file mode 100644 index 9dd86abf..00000000 --- a/test/has_tr1_random_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_RANDOM -// This file should compile, if it does not then -// BOOST_HAS_TR1_RANDOM should not be defined. -// See file boost_has_tr1_random.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_RANDOM -#include "boost_has_tr1_random.ipp" -#else -namespace boost_has_tr1_random = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_random::test(); -} - diff --git a/test/has_tr1_ref_wrap_fail.cpp b/test/has_tr1_ref_wrap_fail.cpp deleted file mode 100644 index c44abb58..00000000 --- a/test/has_tr1_ref_wrap_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_REFERENCE_WRAPPER -// This file should not compile, if it does then -// BOOST_HAS_TR1_REFERENCE_WRAPPER should be defined. -// See file boost_has_tr1_ref_wrap.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_REFERENCE_WRAPPER -#include "boost_has_tr1_ref_wrap.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_reference_wrapper::test(); -} - diff --git a/test/has_tr1_ref_wrap_pass.cpp b/test/has_tr1_ref_wrap_pass.cpp deleted file mode 100644 index 90953012..00000000 --- a/test/has_tr1_ref_wrap_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_REFERENCE_WRAPPER -// This file should compile, if it does not then -// BOOST_HAS_TR1_REFERENCE_WRAPPER should not be defined. -// See file boost_has_tr1_ref_wrap.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_REFERENCE_WRAPPER -#include "boost_has_tr1_ref_wrap.ipp" -#else -namespace boost_has_tr1_reference_wrapper = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_reference_wrapper::test(); -} - diff --git a/test/has_tr1_regex_pass.cpp b/test/has_tr1_regex_pass.cpp deleted file mode 100644 index d6cfa887..00000000 --- a/test/has_tr1_regex_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_REGEX -// This file should compile, if it does not then -// BOOST_HAS_TR1_REGEX should not be defined. -// See file boost_has_tr1_regex.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_REGEX -#include "boost_has_tr1_regex.ipp" -#else -namespace boost_has_tr1_regex = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_regex::test(); -} - diff --git a/test/has_tr1_result_of_fail.cpp b/test/has_tr1_result_of_fail.cpp deleted file mode 100644 index 1fc14f3b..00000000 --- a/test/has_tr1_result_of_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_RESULT_OF -// This file should not compile, if it does then -// BOOST_HAS_TR1_RESULT_OF should be defined. -// See file boost_has_tr1_result_of.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_RESULT_OF -#include "boost_has_tr1_result_of.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_result_of::test(); -} - diff --git a/test/has_tr1_result_of_pass.cpp b/test/has_tr1_result_of_pass.cpp deleted file mode 100644 index b770847c..00000000 --- a/test/has_tr1_result_of_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_RESULT_OF -// This file should compile, if it does not then -// BOOST_HAS_TR1_RESULT_OF should not be defined. -// See file boost_has_tr1_result_of.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_RESULT_OF -#include "boost_has_tr1_result_of.ipp" -#else -namespace boost_has_tr1_result_of = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_result_of::test(); -} - diff --git a/test/has_tr1_shared_ptr_fail.cpp b/test/has_tr1_shared_ptr_fail.cpp deleted file mode 100644 index bbd2fc51..00000000 --- a/test/has_tr1_shared_ptr_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_SHARED_PTR -// This file should not compile, if it does then -// BOOST_HAS_TR1_SHARED_PTR should be defined. -// See file boost_has_tr1_shared_ptr.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_SHARED_PTR -#include "boost_has_tr1_shared_ptr.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_shared_ptr::test(); -} - diff --git a/test/has_tr1_shared_ptr_pass.cpp b/test/has_tr1_shared_ptr_pass.cpp deleted file mode 100644 index a4c9764a..00000000 --- a/test/has_tr1_shared_ptr_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_SHARED_PTR -// This file should compile, if it does not then -// BOOST_HAS_TR1_SHARED_PTR should not be defined. -// See file boost_has_tr1_shared_ptr.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_SHARED_PTR -#include "boost_has_tr1_shared_ptr.ipp" -#else -namespace boost_has_tr1_shared_ptr = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_shared_ptr::test(); -} - diff --git a/test/has_tr1_tuple_fail.cpp b/test/has_tr1_tuple_fail.cpp deleted file mode 100644 index 5ea571e3..00000000 --- a/test/has_tr1_tuple_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_TUPLE -// This file should not compile, if it does then -// BOOST_HAS_TR1_TUPLE should be defined. -// See file boost_has_tr1_tuple.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_TUPLE -#include "boost_has_tr1_tuple.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_tuple::test(); -} - diff --git a/test/has_tr1_tuple_pass.cpp b/test/has_tr1_tuple_pass.cpp deleted file mode 100644 index 6c6d949b..00000000 --- a/test/has_tr1_tuple_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_TUPLE -// This file should compile, if it does not then -// BOOST_HAS_TR1_TUPLE should not be defined. -// See file boost_has_tr1_tuple.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_TUPLE -#include "boost_has_tr1_tuple.ipp" -#else -namespace boost_has_tr1_tuple = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_tuple::test(); -} - diff --git a/test/has_tr1_type_traits_fail.cpp b/test/has_tr1_type_traits_fail.cpp deleted file mode 100644 index b4edd4ef..00000000 --- a/test/has_tr1_type_traits_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_TYPE_TRAITS -// This file should not compile, if it does then -// BOOST_HAS_TR1_TYPE_TRAITS should be defined. -// See file boost_has_tr1_type_traits.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_TYPE_TRAITS -#include "boost_has_tr1_type_traits.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_type_traits::test(); -} - diff --git a/test/has_tr1_type_traits_pass.cpp b/test/has_tr1_type_traits_pass.cpp deleted file mode 100644 index d2c51ddf..00000000 --- a/test/has_tr1_type_traits_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_TYPE_TRAITS -// This file should compile, if it does not then -// BOOST_HAS_TR1_TYPE_TRAITS should not be defined. -// See file boost_has_tr1_type_traits.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_TYPE_TRAITS -#include "boost_has_tr1_type_traits.ipp" -#else -namespace boost_has_tr1_type_traits = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_type_traits::test(); -} - diff --git a/test/has_tr1_unordered_map_fail.cpp b/test/has_tr1_unordered_map_fail.cpp deleted file mode 100644 index b272dbbe..00000000 --- a/test/has_tr1_unordered_map_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_UNORDERED_MAP -// This file should not compile, if it does then -// BOOST_HAS_TR1_UNORDERED_MAP should be defined. -// See file boost_has_tr1_unordered_map.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_UNORDERED_MAP -#include "boost_has_tr1_unordered_map.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_unordered_map::test(); -} - diff --git a/test/has_tr1_unordered_map_pass.cpp b/test/has_tr1_unordered_map_pass.cpp deleted file mode 100644 index e222c01a..00000000 --- a/test/has_tr1_unordered_map_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_UNORDERED_MAP -// This file should compile, if it does not then -// BOOST_HAS_TR1_UNORDERED_MAP should not be defined. -// See file boost_has_tr1_unordered_map.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_UNORDERED_MAP -#include "boost_has_tr1_unordered_map.ipp" -#else -namespace boost_has_tr1_unordered_map = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_unordered_map::test(); -} - diff --git a/test/has_tr1_unordered_set_fail.cpp b/test/has_tr1_unordered_set_fail.cpp deleted file mode 100644 index d11fb352..00000000 --- a/test/has_tr1_unordered_set_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_UNORDERED_SET -// This file should not compile, if it does then -// BOOST_HAS_TR1_UNORDERED_SET should be defined. -// See file boost_has_tr1_unordered_set.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_UNORDERED_SET -#include "boost_has_tr1_unordered_set.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_unordered_set::test(); -} - diff --git a/test/has_tr1_unordered_set_pass.cpp b/test/has_tr1_unordered_set_pass.cpp deleted file mode 100644 index 23c9406e..00000000 --- a/test/has_tr1_unordered_set_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 -// 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_HAS_TR1_UNORDERED_SET -// This file should compile, if it does not then -// BOOST_HAS_TR1_UNORDERED_SET should not be defined. -// See file boost_has_tr1_unordered_set.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_UNORDERED_SET -#include "boost_has_tr1_unordered_set.ipp" -#else -namespace boost_has_tr1_unordered_set = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_unordered_set::test(); -} - diff --git a/test/has_tr1_utility_fail.cpp b/test/has_tr1_utility_fail.cpp deleted file mode 100644 index 5c82a0d5..00000000 --- a/test/has_tr1_utility_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:33 2008 -// 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_HAS_TR1_UTILITY -// This file should not compile, if it does then -// BOOST_HAS_TR1_UTILITY should be defined. -// See file boost_has_tr1_utility.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 -#include "test.hpp" - -#ifndef BOOST_HAS_TR1_UTILITY -#include "boost_has_tr1_utility.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_utility::test(); -} - diff --git a/test/has_tr1_utility_pass.cpp b/test/has_tr1_utility_pass.cpp deleted file mode 100644 index ccdd1acd..00000000 --- a/test/has_tr1_utility_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:33 2008 -// 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_HAS_TR1_UTILITY -// This file should compile, if it does not then -// BOOST_HAS_TR1_UTILITY should not be defined. -// See file boost_has_tr1_utility.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 -#include "test.hpp" - -#ifdef BOOST_HAS_TR1_UTILITY -#include "boost_has_tr1_utility.ipp" -#else -namespace boost_has_tr1_utility = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_utility::test(); -} - diff --git a/test/header_deprecated_test.cpp b/test/header_deprecated_test.cpp new file mode 100644 index 00000000..6a99a97d --- /dev/null +++ b/test/header_deprecated_test.cpp @@ -0,0 +1,18 @@ +// Copyright 2017 Peter Dimov. +// +// 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 + +#include + +BOOST_HEADER_DEPRECATED("") + +#define ALTERNATIVE "the suitable component header" +BOOST_HEADER_DEPRECATED(ALTERNATIVE) + +#include // BOOST_STRINGIZE + +#define HEADER +BOOST_HEADER_DEPRECATED(BOOST_STRINGIZE(HEADER)) diff --git a/test/helper_macro_test.cpp b/test/helper_macro_test.cpp index 81737fec..e3b11128 100644 --- a/test/helper_macro_test.cpp +++ b/test/helper_macro_test.cpp @@ -34,6 +34,9 @@ BOOST_NORETURN void always_throw() throw 0; } +struct BOOST_MAY_ALIAS aliasing_struct {}; +typedef unsigned int BOOST_MAY_ALIAS aliasing_uint; + #define test_fallthrough(x) foobar(x) diff --git a/test/helper_macros_test.cpp b/test/helper_macros_test.cpp new file mode 100644 index 00000000..5bbea8dd --- /dev/null +++ b/test/helper_macros_test.cpp @@ -0,0 +1,30 @@ +// Copyright 2017 Peter Dimov. +// +// 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 + +#include +#include + +int main() +{ +#define X pumpkin + + BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(X), "pumpkin" ); + BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(__LINE__), "16" ); + +#define Y 2 + + int BOOST_JOIN(X, Y) = 0; + (void)pumpkin2; + + int BOOST_JOIN(X, __LINE__) = 0; + (void)pumpkin23; + + BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(BOOST_JOIN(X, Y)), "pumpkin2" ); + BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(BOOST_JOIN(X, __LINE__)), "pumpkin27" ); + + return boost::report_errors(); +} diff --git a/test/link/bc_gen.sh b/test/link/bc_gen.sh index 6e48dda8..07ff3aa5 100644 --- a/test/link/bc_gen.sh +++ b/test/link/bc_gen.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#! /usr/bin/env bash # copyright John Maddock 2005 # Use, modification and distribution are subject to the diff --git a/test/link/vc_gen.sh b/test/link/vc_gen.sh index 1ba46f3b..a4f5dcca 100644 --- a/test/link/vc_gen.sh +++ b/test/link/vc_gen.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#! /usr/bin/env bash # copyright John Maddock 2005 # Use, modification and distribution are subject to the # Boost Software License, Version 1.0. (See accompanying file diff --git a/test/no_cxx11_defaulted_moves_fail.cpp b/test/no_cxx11_defaulted_moves_fail.cpp new file mode 100644 index 00000000..78290126 --- /dev/null +++ b/test/no_cxx11_defaulted_moves_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jan 03 23:31:30 2018 +// 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_CXX11_DEFAULTED_MOVES +// This file should not compile, if it does then +// BOOST_NO_CXX11_DEFAULTED_MOVES should not be defined. +// See file boost_no_cxx11_defaulted_moves.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_CXX11_DEFAULTED_MOVES +#include "boost_no_cxx11_defaulted_moves.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_defaulted_moves::test(); +} + diff --git a/test/no_cxx11_defaulted_moves_pass.cpp b/test/no_cxx11_defaulted_moves_pass.cpp new file mode 100644 index 00000000..bf26c144 --- /dev/null +++ b/test/no_cxx11_defaulted_moves_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jan 03 23:31:30 2018 +// 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_CXX11_DEFAULTED_MOVES +// This file should compile, if it does not then +// BOOST_NO_CXX11_DEFAULTED_MOVES should be defined. +// See file boost_no_cxx11_defaulted_moves.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_CXX11_DEFAULTED_MOVES +#include "boost_no_cxx11_defaulted_moves.ipp" +#else +namespace boost_no_cxx11_defaulted_moves = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_defaulted_moves::test(); +} + diff --git a/test/no_cxx11_pointer_traits_fail.cpp b/test/no_cxx11_pointer_traits_fail.cpp new file mode 100644 index 00000000..59b881bb --- /dev/null +++ b/test/no_cxx11_pointer_traits_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed May 17 01:29:39 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_CXX11_POINTER_TRAITS +// This file should not compile, if it does then +// BOOST_NO_CXX11_POINTER_TRAITS should not be defined. +// See file boost_no_cxx11_pointer_traits.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_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_pointer_traits::test(); +} + diff --git a/test/no_cxx11_pointer_traits_pass.cpp b/test/no_cxx11_pointer_traits_pass.cpp new file mode 100644 index 00000000..071041b4 --- /dev/null +++ b/test/no_cxx11_pointer_traits_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed May 17 01:29:39 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_CXX11_POINTER_TRAITS +// This file should compile, if it does not then +// BOOST_NO_CXX11_POINTER_TRAITS should be defined. +// See file boost_no_cxx11_pointer_traits.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_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +namespace boost_no_cxx11_pointer_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_pointer_traits::test(); +} + diff --git a/test/has_tr1_mem_fn_fail.cpp b/test/no_cxx11_sfinae_expr_fail.cpp similarity index 66% rename from test/has_tr1_mem_fn_fail.cpp rename to test/no_cxx11_sfinae_expr_fail.cpp index 01bff252..1613f16e 100644 --- a/test/has_tr1_mem_fn_fail.cpp +++ b/test/no_cxx11_sfinae_expr_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// This file was automatically generated on Sat Feb 4 00:49:07 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_MEM_FN +// Test file for macro BOOST_NO_CXX11_SFINAE_EXPR // This file should not compile, if it does then -// BOOST_HAS_TR1_MEM_FN should be defined. -// See file boost_has_tr1_mem_fn.ipp for details +// BOOST_NO_CXX11_SFINAE_EXPR should not be defined. +// See file boost_no_cxx11_sfinae_expr.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_MEM_FN -#include "boost_has_tr1_mem_fn.ipp" +#ifdef BOOST_NO_CXX11_SFINAE_EXPR +#include "boost_no_cxx11_sfinae_expr.ipp" #else #error "this file should not compile" #endif int main( int, char *[] ) { - return boost_has_tr1_mem_fn::test(); + return boost_no_cxx11_sfinae_expr::test(); } diff --git a/test/no_cxx11_sfinae_expr_pass.cpp b/test/no_cxx11_sfinae_expr_pass.cpp new file mode 100644 index 00000000..15d988b0 --- /dev/null +++ b/test/no_cxx11_sfinae_expr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sat Feb 4 00:49:07 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_CXX11_SFINAE_EXPR +// This file should compile, if it does not then +// BOOST_NO_CXX11_SFINAE_EXPR should be defined. +// See file boost_no_cxx11_sfinae_expr.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_CXX11_SFINAE_EXPR +#include "boost_no_cxx11_sfinae_expr.ipp" +#else +namespace boost_no_cxx11_sfinae_expr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_sfinae_expr::test(); +} + diff --git a/test/has_tr1_regex_fail.cpp b/test/no_cxx14_std_exchange_fail.cpp similarity index 66% rename from test/has_tr1_regex_fail.cpp rename to test/no_cxx14_std_exchange_fail.cpp index 7daac732..c7100377 100644 --- a/test/has_tr1_regex_fail.cpp +++ b/test/no_cxx14_std_exchange_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// This file was automatically generated on Fri Oct 14 12:13:46 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_REGEX +// Test file for macro BOOST_NO_CXX17_STD_APPLY // This file should not compile, if it does then -// BOOST_HAS_TR1_REGEX should be defined. -// See file boost_has_tr1_regex.ipp for details +// BOOST_NO_CXX17_STD_APPLY should not be defined. +// See file boost_no_cxx17_std_apply.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_REGEX -#include "boost_has_tr1_regex.ipp" +#ifdef BOOST_NO_CXX14_STD_EXCHANGE +#include "boost_no_cxx14_std_exchange.ipp" #else #error "this file should not compile" #endif int main( int, char *[] ) { - return boost_has_tr1_regex::test(); + return boost_no_cxx14_std_exchange::test(); } diff --git a/test/has_tr1_array_pass.cpp b/test/no_cxx14_std_exchange_pass.cpp similarity index 62% rename from test/has_tr1_array_pass.cpp rename to test/no_cxx14_std_exchange_pass.cpp index 4b073157..edac2fbf 100644 --- a/test/has_tr1_array_pass.cpp +++ b/test/no_cxx14_std_exchange_pass.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// This file was automatically generated on Fri Oct 14 12:13:46 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_ARRAY +// Test file for macro BOOST_NO_CXX17_STD_APPLY // This file should compile, if it does not then -// BOOST_HAS_TR1_ARRAY should not be defined. -// See file boost_has_tr1_array.ipp for details +// BOOST_NO_CXX!/_STD_APPLY should be defined. +// See file boost_no_cxx17_std_apply.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifdef BOOST_HAS_TR1_ARRAY -#include "boost_has_tr1_array.ipp" +#ifndef BOOST_NO_CXX14_STD_EXCHANGE +#include "boost_no_cxx14_std_exchange.ipp" #else -namespace boost_has_tr1_array = empty_boost; +namespace boost_no_cxx14_std_exchange = empty_boost; #endif int main( int, char *[] ) { - return boost_has_tr1_array::test(); + return boost_no_cxx14_std_exchange::test(); } diff --git a/test/no_cxx17_fold_expressions_fail.cpp b/test/no_cxx17_fold_expressions_fail.cpp new file mode 100644 index 00000000..db22b152 --- /dev/null +++ b/test/no_cxx17_fold_expressions_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 10:27:35 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_CXX17_FOLD_EXPRESSIONS +// This file should not compile, if it does then +// BOOST_NO_CXX17_FOLD_EXPRESSIONS should not be defined. +// See file boost_no_cxx17_fold_expressions.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_CXX17_FOLD_EXPRESSIONS +#include "boost_no_cxx17_fold_expressions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_fold_expressions::test(); +} + diff --git a/test/no_cxx17_fold_expressions_pass.cpp b/test/no_cxx17_fold_expressions_pass.cpp new file mode 100644 index 00000000..bc2feeab --- /dev/null +++ b/test/no_cxx17_fold_expressions_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 10:27:35 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_CXX17_FOLD_EXPRESSIONS +// This file should compile, if it does not then +// BOOST_NO_CXX17_FOLD_EXPRESSIONS should be defined. +// See file boost_no_cxx17_fold_expressions.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_CXX17_FOLD_EXPRESSIONS +#include "boost_no_cxx17_fold_expressions.ipp" +#else +namespace boost_no_cxx17_fold_expressions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_fold_expressions::test(); +} + diff --git a/test/has_tr1_array_fail.cpp b/test/no_cxx17_if_constexpr_fail.cpp similarity index 66% rename from test/has_tr1_array_fail.cpp rename to test/no_cxx17_if_constexpr_fail.cpp index 36a33a15..63137ff3 100644 --- a/test/has_tr1_array_fail.cpp +++ b/test/no_cxx17_if_constexpr_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// This file was automatically generated on Tue Mar 6 00:52:32 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_ARRAY +// Test file for macro BOOST_NO_CXX17_IF_CONSTEXPR // This file should not compile, if it does then -// BOOST_HAS_TR1_ARRAY should be defined. -// See file boost_has_tr1_array.ipp for details +// BOOST_NO_CXX17_IF_CONSTEXPR should not be defined. +// See file boost_no_cxx17_if_constexpr.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_ARRAY -#include "boost_has_tr1_array.ipp" +#ifdef BOOST_NO_CXX17_IF_CONSTEXPR +#include "boost_no_cxx17_if_constexpr.ipp" #else #error "this file should not compile" #endif int main( int, char *[] ) { - return boost_has_tr1_array::test(); + return boost_no_cxx17_if_constexpr::test(); } diff --git a/test/no_cxx17_if_constexpr_pass.cpp b/test/no_cxx17_if_constexpr_pass.cpp new file mode 100644 index 00000000..bcbd808c --- /dev/null +++ b/test/no_cxx17_if_constexpr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Mar 6 00:52:32 2018 +// 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_CXX17_IF_CONSTEXPR +// This file should compile, if it does not then +// BOOST_NO_CXX17_IF_CONSTEXPR should be defined. +// See file boost_no_cxx17_if_constexpr.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_CXX17_IF_CONSTEXPR +#include "boost_no_cxx17_if_constexpr.ipp" +#else +namespace boost_no_cxx17_if_constexpr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_if_constexpr::test(); +} + diff --git a/test/no_cxx17_inline_variables_fail.cpp b/test/no_cxx17_inline_variables_fail.cpp new file mode 100644 index 00000000..58e688b3 --- /dev/null +++ b/test/no_cxx17_inline_variables_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 10:00:26 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_CXX17_INLINE_VARIABLES +// This file should not compile, if it does then +// BOOST_NO_CXX17_INLINE_VARIABLES should not be defined. +// See file boost_no_cxx17_inline_variables.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_CXX17_INLINE_VARIABLES +#include "boost_no_cxx17_inline_variables.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_inline_variables::test(); +} + diff --git a/test/no_cxx17_inline_variables_pass.cpp b/test/no_cxx17_inline_variables_pass.cpp new file mode 100644 index 00000000..ec5f69e2 --- /dev/null +++ b/test/no_cxx17_inline_variables_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 10:00:26 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_CXX17_INLINE_VARIABLES +// This file should compile, if it does not then +// BOOST_NO_CXX17_INLINE_VARIABLES should be defined. +// See file boost_no_cxx17_inline_variables.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_CXX17_INLINE_VARIABLES +#include "boost_no_cxx17_inline_variables.ipp" +#else +namespace boost_no_cxx17_inline_variables = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_inline_variables::test(); +} + diff --git a/test/no_cxx17_iterator_traits_fail.cpp b/test/no_cxx17_iterator_traits_fail.cpp new file mode 100644 index 00000000..4b241c98 --- /dev/null +++ b/test/no_cxx17_iterator_traits_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Jul 9 15:26:23 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_CXX17_ITERATOR_TRAITS +// This file should not compile, if it does then +// BOOST_NO_CXX17_ITERATOR_TRAITS should not be defined. +// See file boost_no_cxx17_iterator_traits.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_CXX17_ITERATOR_TRAITS +#include "boost_no_cxx17_iterator_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_iterator_traits::test(); +} + diff --git a/test/no_cxx17_iterator_traits_pass.cpp b/test/no_cxx17_iterator_traits_pass.cpp new file mode 100644 index 00000000..a2a29bb6 --- /dev/null +++ b/test/no_cxx17_iterator_traits_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Jul 9 15:26:23 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_CXX17_ITERATOR_TRAITS +// This file should compile, if it does not then +// BOOST_NO_CXX17_ITERATOR_TRAITS should be defined. +// See file boost_no_cxx17_iterator_traits.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_CXX17_ITERATOR_TRAITS +#include "boost_no_cxx17_iterator_traits.ipp" +#else +namespace boost_no_cxx17_iterator_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_iterator_traits::test(); +} + diff --git a/test/has_tr1_hash_fail.cpp b/test/no_cxx17_std_apply_fail.cpp similarity index 67% rename from test/has_tr1_hash_fail.cpp rename to test/no_cxx17_std_apply_fail.cpp index 2c072e88..e1c3d367 100644 --- a/test/has_tr1_hash_fail.cpp +++ b/test/no_cxx17_std_apply_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// This file was automatically generated on Fri Oct 14 12:13:46 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_HASH +// Test file for macro BOOST_NO_CXX17_STD_APPLY // This file should not compile, if it does then -// BOOST_HAS_TR1_HASH should be defined. -// See file boost_has_tr1_hash.ipp for details +// BOOST_NO_CXX17_STD_APPLY should not be defined. +// See file boost_no_cxx17_std_apply.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_HASH -#include "boost_has_tr1_hash.ipp" +#ifdef BOOST_NO_CXX17_STD_APPLY +#include "boost_no_cxx17_std_apply.ipp" #else #error "this file should not compile" #endif int main( int, char *[] ) { - return boost_has_tr1_hash::test(); + return boost_no_cxx17_std_apply::test(); } diff --git a/test/has_tr1_bind_pass.cpp b/test/no_cxx17_std_apply_pass.cpp similarity index 62% rename from test/has_tr1_bind_pass.cpp rename to test/no_cxx17_std_apply_pass.cpp index 54a6a6be..b3aa8744 100644 --- a/test/has_tr1_bind_pass.cpp +++ b/test/no_cxx17_std_apply_pass.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// This file was automatically generated on Fri Oct 14 12:13:46 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_BIND +// Test file for macro BOOST_NO_CXX17_STD_APPLY // This file should compile, if it does not then -// BOOST_HAS_TR1_BIND should not be defined. -// See file boost_has_tr1_bind.ipp for details +// BOOST_NO_CXX!/_STD_APPLY should be defined. +// See file boost_no_cxx17_std_apply.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifdef BOOST_HAS_TR1_BIND -#include "boost_has_tr1_bind.ipp" +#ifndef BOOST_NO_CXX17_STD_APPLY +#include "boost_no_cxx17_std_apply.ipp" #else -namespace boost_has_tr1_bind = empty_boost; +namespace boost_no_cxx17_std_apply = empty_boost; #endif int main( int, char *[] ) { - return boost_has_tr1_bind::test(); + return boost_no_cxx17_std_apply::test(); } diff --git a/test/no_cxx17_structured_bindings_fail.cpp b/test/no_cxx17_structured_bindings_fail.cpp new file mode 100644 index 00000000..9b7b1fb1 --- /dev/null +++ b/test/no_cxx17_structured_bindings_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 09:56:04 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_CXX17_STRUCTURED_BINDINGS +// This file should not compile, if it does then +// BOOST_NO_CXX17_STRUCTURED_BINDINGS should not be defined. +// See file boost_no_cxx17_structured_bindings.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_CXX17_STRUCTURED_BINDINGS +#include "boost_no_cxx17_structured_bindings.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_structured_bindings::test(); +} + diff --git a/test/no_cxx17_structured_bindings_pass.cpp b/test/no_cxx17_structured_bindings_pass.cpp new file mode 100644 index 00000000..312e0c0c --- /dev/null +++ b/test/no_cxx17_structured_bindings_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 29 09:56:04 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_CXX17_STRUCTURED_BINDINGS +// This file should compile, if it does not then +// BOOST_NO_CXX17_STRUCTURED_BINDINGS should be defined. +// See file boost_no_cxx17_structured_bindings.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_CXX17_STRUCTURED_BINDINGS +#include "boost_no_cxx17_structured_bindings.ipp" +#else +namespace boost_no_cxx17_structured_bindings = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_structured_bindings::test(); +} + diff --git a/test/has_tr1_bind_fail.cpp b/test/no_cxx98_binders_fail.cpp similarity index 67% rename from test/has_tr1_bind_fail.cpp rename to test/no_cxx98_binders_fail.cpp index 7af7516e..d17f1490 100644 --- a/test/has_tr1_bind_fail.cpp +++ b/test/no_cxx98_binders_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// 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 @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_BIND +// Test file for macro BOOST_NO_CXX98_BINDERS // This file should not compile, if it does then -// BOOST_HAS_TR1_BIND should be defined. -// See file boost_has_tr1_bind.ipp for details +// 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: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_BIND -#include "boost_has_tr1_bind.ipp" +#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_has_tr1_bind::test(); + return boost_no_cxx98_binders::test(); } diff --git a/test/has_tr1_hash_pass.cpp b/test/no_cxx98_binders_pass.cpp similarity index 62% rename from test/has_tr1_hash_pass.cpp rename to test/no_cxx98_binders_pass.cpp index 48c29347..55878792 100644 --- a/test/has_tr1_hash_pass.cpp +++ b/test/no_cxx98_binders_pass.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// 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 @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_HASH +// Test file for macro BOOST_NO_CXX98_BINDERS // This file should compile, if it does not then -// BOOST_HAS_TR1_HASH should not be defined. -// See file boost_has_tr1_hash.ipp for details +// 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: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifdef BOOST_HAS_TR1_HASH -#include "boost_has_tr1_hash.ipp" +#ifndef BOOST_NO_CXX98_BINDERS +#include "boost_no_cxx98_binders.ipp" #else -namespace boost_has_tr1_hash = empty_boost; +namespace boost_no_cxx98_binders = empty_boost; #endif int main( int, char *[] ) { - return boost_has_tr1_hash::test(); + return boost_no_cxx98_binders::test(); } diff --git a/test/has_tr1_function_fail.cpp b/test/no_cxx98_function_base_fail.cpp similarity index 65% rename from test/has_tr1_function_fail.cpp rename to test/no_cxx98_function_base_fail.cpp index f6e3a2db..132edce8 100644 --- a/test/has_tr1_function_fail.cpp +++ b/test/no_cxx98_function_base_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// 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 @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_FUNCTION +// Test file for macro BOOST_NO_CXX98_FUNCTION_BASE // This file should not compile, if it does then -// BOOST_HAS_TR1_FUNCTION should be defined. -// See file boost_has_tr1_function.ipp for details +// 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: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifndef BOOST_HAS_TR1_FUNCTION -#include "boost_has_tr1_function.ipp" +#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_has_tr1_function::test(); + return boost_no_cxx98_function_base::test(); } diff --git a/test/has_tr1_function_pass.cpp b/test/no_cxx98_function_base_pass.cpp similarity index 61% rename from test/has_tr1_function_pass.cpp rename to test/no_cxx98_function_base_pass.cpp index 8aa466c1..a608e75b 100644 --- a/test/has_tr1_function_pass.cpp +++ b/test/no_cxx98_function_base_pass.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// 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 @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_FUNCTION +// Test file for macro BOOST_NO_CXX98_FUNCTION_BASE // This file should compile, if it does not then -// BOOST_HAS_TR1_FUNCTION should not be defined. -// See file boost_has_tr1_function.ipp for details +// 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: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifdef BOOST_HAS_TR1_FUNCTION -#include "boost_has_tr1_function.ipp" +#ifndef BOOST_NO_CXX98_FUNCTION_BASE +#include "boost_no_cxx98_function_base.ipp" #else -namespace boost_has_tr1_function = empty_boost; +namespace boost_no_cxx98_function_base = empty_boost; #endif int main( int, char *[] ) { - return boost_has_tr1_function::test(); + 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(); +} + diff --git a/test/no_restrict_references_fail.cpp b/test/no_restrict_references_fail.cpp new file mode 100644 index 00000000..867aa0cb --- /dev/null +++ b/test/no_restrict_references_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Feb 5 18:12:09 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_RESTRICT_REFERENCES +// This file should not compile, if it does then +// BOOST_NO_RESTRICT_REFERENCES should not be defined. +// See file boost_no_restrict_references.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_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_restrict_references::test(); +} + diff --git a/test/has_tr1_mem_fn_pass.cpp b/test/no_restrict_references_pass.cpp similarity index 65% rename from test/has_tr1_mem_fn_pass.cpp rename to test/no_restrict_references_pass.cpp index 9a1398d0..878c54eb 100644 --- a/test/has_tr1_mem_fn_pass.cpp +++ b/test/no_restrict_references_pass.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// This file was automatically generated on Sun Feb 5 18:12:09 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -10,10 +10,10 @@ // -// Test file for macro BOOST_HAS_TR1_MEM_FN +// Test file for macro BOOST_NO_RESTRICT_REFERENCES // This file should compile, if it does not then -// BOOST_HAS_TR1_MEM_FN should not be defined. -// See file boost_has_tr1_mem_fn.ipp for details +// BOOST_NO_RESTRICT_REFERENCES should be defined. +// See file boost_no_restrict_references.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -22,17 +22,16 @@ #endif #include -#include #include "test.hpp" -#ifdef BOOST_HAS_TR1_MEM_FN -#include "boost_has_tr1_mem_fn.ipp" +#ifndef BOOST_NO_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" #else -namespace boost_has_tr1_mem_fn = empty_boost; +namespace boost_no_restrict_references = empty_boost; #endif int main( int, char *[] ) { - return boost_has_tr1_mem_fn::test(); + return boost_no_restrict_references::test(); } diff --git a/test/pragma_message_test.cpp b/test/pragma_message_test.cpp new file mode 100644 index 00000000..9464897c --- /dev/null +++ b/test/pragma_message_test.cpp @@ -0,0 +1,18 @@ +// Copyright 2017 Peter Dimov. +// +// 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 + +#include + +BOOST_PRAGMA_MESSAGE("first message") + +#define MSG2 "second message" +BOOST_PRAGMA_MESSAGE(MSG2) + +#include // BOOST_STRINGIZE + +#define MSG3 third message +BOOST_PRAGMA_MESSAGE(BOOST_STRINGIZE(MSG3)) 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 diff --git a/tools/generate.cpp b/tools/generate.cpp index 0ea4b4cc..53c73be3 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() { @@ -162,9 +162,6 @@ void write_test_file(const fs::path& file, ofs << "#include \n"; - if(regex_match(macro_name, tr1_exp)) - ofs << "#include \n"; - ofs << "#include \"test.hpp\"\n\n" "#if"; if(positive_test != expect_success) @@ -192,8 +189,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 +207,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 +279,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[])