From f020bec68a1c2eadd2f8c45aba0d00da6965637a Mon Sep 17 00:00:00 2001 From: Joel Falcou Date: Wed, 4 Nov 2015 16:48:16 +0100 Subject: [PATCH 001/261] Provide BOOST_RESTRICT and BOOST_NO_RESTRICT_REFERENCES --- doc/macro_reference.qbk | 18 ++++++++++++++++++ include/boost/config/suffix.hpp | 21 ++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 0973c365..46164770 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -209,6 +209,9 @@ 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. @@ -1136,6 +1139,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. diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 17bf1020..0ffbb29e 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -583,6 +583,25 @@ 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) +# 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_FORCEINLINE ---------------------------------------------// // Macro to use in place of 'inline' to force a function to be inline #if !defined(BOOST_FORCEINLINE) @@ -604,7 +623,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 From 76f6cdc45393d15d7d28d108c86e24556e4aa368 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 7 Aug 2016 18:22:29 +0100 Subject: [PATCH 002/261] Merge branch 'develop' # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- checks/Jamfile.v2 | 794 +++++------------- checks/test_case.cpp | 6 +- .../boost_config/boost_macro_reference.html | 15 +- doc/html/index.html | 2 +- doc/macro_reference.qbk | 4 +- include/boost/config/compiler/borland.hpp | 1 + include/boost/config/compiler/clang.hpp | 20 +- include/boost/config/compiler/codegear.hpp | 1 + include/boost/config/compiler/comeau.hpp | 2 +- include/boost/config/compiler/common_edg.hpp | 1 + include/boost/config/compiler/compaq_cxx.hpp | 2 +- include/boost/config/compiler/cray.hpp | 3 +- include/boost/config/compiler/digitalmars.hpp | 1 + include/boost/config/compiler/gcc.hpp | 1 + include/boost/config/compiler/gcc_xml.hpp | 3 +- include/boost/config/compiler/greenhills.hpp | 2 +- include/boost/config/compiler/hp_acc.hpp | 3 +- include/boost/config/compiler/intel.hpp | 2 +- include/boost/config/compiler/kai.hpp | 2 +- include/boost/config/compiler/metrowerks.hpp | 1 + include/boost/config/compiler/mpw.hpp | 1 + include/boost/config/compiler/pathscale.hpp | 1 + include/boost/config/compiler/pgi.hpp | 1 + include/boost/config/compiler/sgi_mipspro.hpp | 2 +- include/boost/config/compiler/sunpro_cc.hpp | 1 + include/boost/config/compiler/vacpp.hpp | 1 + include/boost/config/compiler/visualc.hpp | 26 +- include/boost/config/compiler/xlcpp.hpp | 4 + .../boost/config/select_compiler_config.hpp | 42 +- include/boost/config/stdlib/libstdcpp3.hpp | 12 + include/boost/version.hpp | 4 +- test/all/Jamfile.v2 | 5 +- test/boost_no_cxx11_thread_local.ipp | 24 + test/boost_no_ret_det.ipp | 4 +- test/config_info.cpp | 7 + test/config_test.cpp | 12 +- test/no_cxx11_thread_local_fail.cpp | 37 + test/no_cxx11_thread_local_pass.cpp | 37 + tools/generate.cpp | 19 +- 39 files changed, 446 insertions(+), 660 deletions(-) create mode 100644 test/boost_no_cxx11_thread_local.ipp create mode 100644 test/no_cxx11_thread_local_fail.cpp create mode 100644 test/no_cxx11_thread_local_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 3ae69ce9..f178bb74 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 Thu Aug 13 16:32:12 2015 +# This file was automatically generated on Fri Jul 1 18:47:25 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -10,602 +10,208 @@ import modules ; import path ; -actions simple_run_action -{ - $(>) > $(<) -} -rule run-simple ( sources + : args * : input-files * : requirements * : target-name ) +rule run-simple ( requirements * : target-name ) { - obj $(target-name)_obj : $(sources) : $(requirements) ; + obj $(target-name)_obj : test_case.cpp : $(requirements) ; explicit $(target-name)_obj ; - exe $(target-name)_exe : $(target-name)_obj : $(requirements) ; - explicit $(target-name)_exe ; - #testing.capture-output $(target-name)_output : $(target-name) : $(requirements) $(target-name) ; - make $(target-name).output : $(target-name)_exe : @simple_run_action ; - explicit $(target-name).output ; + unit-test $(target-name) : $(target-name)_obj : $(requirements) ; + explicit $(target-name) ; } -run-simple test_case.cpp : : : TEST_BOOST_HAS_TWO_ARG_USE_FACET : two_arg_use_facet ; -alias two_arg_use_facet : two_arg_use_facet.output ; -explicit two_arg_use_facet ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_BETHREADS : bethreads ; -alias bethreads : bethreads.output ; -explicit bethreads ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_CLOCK_GETTIME : clock_gettime ; -alias clock_gettime : clock_gettime.output ; -explicit clock_gettime ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_DIRENT_H : dirent_h ; -alias dirent_h : dirent_h.output ; -explicit dirent_h ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_EXPM1 : expm1 ; -alias expm1 : expm1.output ; -explicit expm1 ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_FLOAT128 : float128 ; -alias float128 : float128.output ; -explicit float128 ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_FTIME : ftime ; -alias ftime : ftime.output ; -explicit ftime ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME : getsystemtimeasfiletime ; -alias getsystemtimeasfiletime : getsystemtimeasfiletime.output ; -explicit getsystemtimeasfiletime ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_GETTIMEOFDAY : gettimeofday ; -alias gettimeofday : gettimeofday.output ; -explicit gettimeofday ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_HASH : hash ; -alias hash : hash.output ; -explicit hash ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_INT128 : int128 ; -alias int128 : int128.output ; -explicit int128 ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_LOG1P : log1p ; -alias log1p : log1p.output ; -explicit log1p ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_LONG_LONG : long_long ; -alias long_long : long_long.output ; -explicit long_long ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_MACRO_USE_FACET : macro_use_facet ; -alias macro_use_facet : macro_use_facet.output ; -explicit macro_use_facet ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_MS_INT64 : ms_int64 ; -alias ms_int64 : ms_int64.output ; -explicit ms_int64 ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_NANOSLEEP : nanosleep ; -alias nanosleep : nanosleep.output ; -explicit nanosleep ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_NL_TYPES_H : nl_types_h ; -alias nl_types_h : nl_types_h.output ; -explicit nl_types_h ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_NRVO : nrvo ; -alias nrvo : nrvo.output ; -explicit nrvo ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR : partial_std_allocator ; -alias partial_std_allocator : partial_std_allocator.output ; -explicit partial_std_allocator ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_PTHREAD_DELAY_NP : pthread_delay_np ; -alias pthread_delay_np : pthread_delay_np.output ; -explicit pthread_delay_np ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE : pthread_mutexattr_settype ; -alias pthread_mutexattr_settype : pthread_mutexattr_settype.output ; -explicit pthread_mutexattr_settype ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_PTHREAD_YIELD : pthread_yield ; -alias pthread_yield : pthread_yield.output ; -explicit pthread_yield ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_PTHREADS : pthreads ; -alias pthreads : pthreads.output ; -explicit pthreads ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_RVALUE_REFS : rvalue_refs ; -alias rvalue_refs : rvalue_refs.output ; -explicit rvalue_refs ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_SCHED_YIELD : sched_yield ; -alias sched_yield : sched_yield.output ; -explicit sched_yield ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_SGI_TYPE_TRAITS : sgi_type_traits ; -alias sgi_type_traits : sgi_type_traits.output ; -explicit sgi_type_traits ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_SIGACTION : sigaction ; -alias sigaction : sigaction.output ; -explicit sigaction ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_SLIST : slist ; -alias slist : slist.output ; -explicit slist ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_STATIC_ASSERT : static_assert ; -alias static_assert : static_assert.output ; -explicit static_assert ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_STDINT_H : stdint_h ; -alias stdint_h : stdint_h.output ; -explicit stdint_h ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_STLP_USE_FACET : stlp_use_facet ; -alias stlp_use_facet : stlp_use_facet.output ; -explicit stlp_use_facet ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_ARRAY : tr1_array ; -alias tr1_array : tr1_array.output ; -explicit tr1_array ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_BIND : tr1_bind ; -alias tr1_bind : tr1_bind.output ; -explicit tr1_bind ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS : tr1_complex_overloads ; -alias tr1_complex_overloads : tr1_complex_overloads.output ; -explicit tr1_complex_overloads ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG : tr1_complex_inverse_trig ; -alias tr1_complex_inverse_trig : tr1_complex_inverse_trig.output ; -explicit tr1_complex_inverse_trig ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_FUNCTION : tr1_function ; -alias tr1_function : tr1_function.output ; -explicit tr1_function ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_HASH : tr1_hash ; -alias tr1_hash : tr1_hash.output ; -explicit tr1_hash ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_MEM_FN : tr1_mem_fn ; -alias tr1_mem_fn : tr1_mem_fn.output ; -explicit tr1_mem_fn ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_RANDOM : tr1_random ; -alias tr1_random : tr1_random.output ; -explicit tr1_random ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER : tr1_reference_wrapper ; -alias tr1_reference_wrapper : tr1_reference_wrapper.output ; -explicit tr1_reference_wrapper ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_REGEX : tr1_regex ; -alias tr1_regex : tr1_regex.output ; -explicit tr1_regex ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_RESULT_OF : tr1_result_of ; -alias tr1_result_of : tr1_result_of.output ; -explicit tr1_result_of ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_SHARED_PTR : tr1_shared_ptr ; -alias tr1_shared_ptr : tr1_shared_ptr.output ; -explicit tr1_shared_ptr ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_TUPLE : tr1_tuple ; -alias tr1_tuple : tr1_tuple.output ; -explicit tr1_tuple ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_TYPE_TRAITS : tr1_type_traits ; -alias tr1_type_traits : tr1_type_traits.output ; -explicit tr1_type_traits ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_UNORDERED_MAP : tr1_unordered_map ; -alias tr1_unordered_map : tr1_unordered_map.output ; -explicit tr1_unordered_map ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_UNORDERED_SET : tr1_unordered_set ; -alias tr1_unordered_set : tr1_unordered_set.output ; -explicit tr1_unordered_set ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_TR1_UTILITY : tr1_utility ; -alias tr1_utility : tr1_utility.output ; -explicit tr1_utility ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_UNISTD_H : unistd_h ; -alias unistd_h : unistd_h.output ; -explicit unistd_h ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_VARIADIC_TMPL : variadic_tmpl ; -alias variadic_tmpl : variadic_tmpl.output ; -explicit variadic_tmpl ; -run-simple test_case.cpp : : : TEST_BOOST_MSVC6_MEMBER_TEMPLATES : boost_msvc6_member_templates ; -alias boost_msvc6_member_templates : boost_msvc6_member_templates.output ; -explicit boost_msvc6_member_templates ; -run-simple test_case.cpp : : : TEST_BOOST_MSVC_STD_ITERATOR : boost_msvc_std_iterator ; -alias boost_msvc_std_iterator : boost_msvc_std_iterator.output ; -explicit boost_msvc_std_iterator ; -run-simple test_case.cpp : : : TEST_BOOST_HAS_WINTHREADS : winthreads ; -alias winthreads : winthreads.output ; -explicit winthreads ; -run-simple test_case.cpp : : : TEST_BOOST_NO_ADL_BARRIER : adl_barrier ; -alias adl_barrier : adl_barrier.output ; -explicit adl_barrier ; -run-simple test_case.cpp : : : TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP : argument_dependent_lookup ; -alias argument_dependent_lookup : argument_dependent_lookup.output ; -explicit argument_dependent_lookup ; -run-simple test_case.cpp : : : TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS : array_type_specializations ; -alias array_type_specializations : array_type_specializations.output ; -explicit array_type_specializations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS : cxx11_auto_declarations ; -alias cxx11_auto_declarations : cxx11_auto_declarations.output ; -explicit cxx11_auto_declarations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS : cxx11_auto_multideclarations ; -alias cxx11_auto_multideclarations : cxx11_auto_multideclarations.output ; -explicit cxx11_auto_multideclarations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_AUTO_PTR : auto_ptr ; -alias auto_ptr : auto_ptr.output ; -explicit auto_ptr ; -run-simple test_case.cpp : : : TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG : boost_bcb_partial_specialization_bug ; -alias boost_bcb_partial_specialization_bug : boost_bcb_partial_specialization_bug.output ; -explicit boost_bcb_partial_specialization_bug ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_CHAR16_T : cxx11_char16_t ; -alias cxx11_char16_t : cxx11_char16_t.output ; -explicit cxx11_char16_t ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_CHAR32_T : cxx11_char32_t ; -alias cxx11_char32_t : cxx11_char32_t.output ; -explicit cxx11_char32_t ; -run-simple test_case.cpp : : : TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION : complete_value_initialization ; -alias complete_value_initialization : complete_value_initialization.output ; -explicit complete_value_initialization ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_CONSTEXPR : cxx11_constexpr ; -alias cxx11_constexpr : cxx11_constexpr.output ; -explicit cxx11_constexpr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CTYPE_FUNCTIONS : ctype_functions ; -alias ctype_functions : ctype_functions.output ; -explicit ctype_functions ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CV_SPECIALIZATIONS : cv_specializations ; -alias cv_specializations : cv_specializations.output ; -explicit cv_specializations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS : cv_void_specializations ; -alias cv_void_specializations : cv_void_specializations.output ; -explicit cv_void_specializations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CWCHAR : cwchar ; -alias cwchar : cwchar.output ; -explicit cwchar ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CWCTYPE : cwctype ; -alias cwctype : cwctype.output ; -explicit cwctype ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_ADDRESSOF : cxx11_addressof ; -alias cxx11_addressof : cxx11_addressof.output ; -explicit cxx11_addressof ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_ALIGNAS : cxx11_alignas ; -alias cxx11_alignas : cxx11_alignas.output ; -explicit cxx11_alignas ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_ALLOCATOR : cxx11_allocator ; -alias cxx11_allocator : cxx11_allocator.output ; -explicit cxx11_allocator ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR : cxx11_atomic_smart_ptr ; -alias cxx11_atomic_smart_ptr : cxx11_atomic_smart_ptr.output ; -explicit cxx11_atomic_smart_ptr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_FINAL : cxx11_final ; -alias cxx11_final : cxx11_final.output ; -explicit cxx11_final ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_ARRAY : cxx11_hdr_array ; -alias cxx11_hdr_array : cxx11_hdr_array.output ; -explicit cxx11_hdr_array ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_ATOMIC : cxx11_hdr_atomic ; -alias cxx11_hdr_atomic : cxx11_hdr_atomic.output ; -explicit cxx11_hdr_atomic ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_CHRONO : cxx11_hdr_chrono ; -alias cxx11_hdr_chrono : cxx11_hdr_chrono.output ; -explicit cxx11_hdr_chrono ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_CODECVT : cxx11_hdr_codecvt ; -alias cxx11_hdr_codecvt : cxx11_hdr_codecvt.output ; -explicit cxx11_hdr_codecvt ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE : cxx11_hdr_condition_variable ; -alias cxx11_hdr_condition_variable : cxx11_hdr_condition_variable.output ; -explicit cxx11_hdr_condition_variable ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST : cxx11_hdr_forward_list ; -alias cxx11_hdr_forward_list : cxx11_hdr_forward_list.output ; -explicit cxx11_hdr_forward_list ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_FUTURE : cxx11_hdr_future ; -alias cxx11_hdr_future : cxx11_hdr_future.output ; -explicit cxx11_hdr_future ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST : cxx11_hdr_initializer_list ; -alias cxx11_hdr_initializer_list : cxx11_hdr_initializer_list.output ; -explicit cxx11_hdr_initializer_list ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_MUTEX : cxx11_hdr_mutex ; -alias cxx11_hdr_mutex : cxx11_hdr_mutex.output ; -explicit cxx11_hdr_mutex ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_RANDOM : cxx11_hdr_random ; -alias cxx11_hdr_random : cxx11_hdr_random.output ; -explicit cxx11_hdr_random ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_RATIO : cxx11_hdr_ratio ; -alias cxx11_hdr_ratio : cxx11_hdr_ratio.output ; -explicit cxx11_hdr_ratio ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_REGEX : cxx11_hdr_regex ; -alias cxx11_hdr_regex : cxx11_hdr_regex.output ; -explicit cxx11_hdr_regex ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR : cxx11_hdr_system_error ; -alias cxx11_hdr_system_error : cxx11_hdr_system_error.output ; -explicit cxx11_hdr_system_error ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_THREAD : cxx11_hdr_thread ; -alias cxx11_hdr_thread : cxx11_hdr_thread.output ; -explicit cxx11_hdr_thread ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_TUPLE : cxx11_hdr_tuple ; -alias cxx11_hdr_tuple : cxx11_hdr_tuple.output ; -explicit cxx11_hdr_tuple ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS : cxx11_hdr_type_traits ; -alias cxx11_hdr_type_traits : cxx11_hdr_type_traits.output ; -explicit cxx11_hdr_type_traits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_TYPEINDEX : cxx11_hdr_typeindex ; -alias cxx11_hdr_typeindex : cxx11_hdr_typeindex.output ; -explicit cxx11_hdr_typeindex ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP : cxx11_hdr_unordered_map ; -alias cxx11_hdr_unordered_map : cxx11_hdr_unordered_map.output ; -explicit cxx11_hdr_unordered_map ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET : cxx11_hdr_unordered_set ; -alias cxx11_hdr_unordered_set : cxx11_hdr_unordered_set.output ; -explicit cxx11_hdr_unordered_set ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_INLINE_NAMESPACES : cxx11_inline_namespaces ; -alias cxx11_inline_namespaces : cxx11_inline_namespaces.output ; -explicit cxx11_inline_namespaces ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS : cxx11_non_public_defaulted_functions ; -alias cxx11_non_public_defaulted_functions : cxx11_non_public_defaulted_functions.output ; -explicit cxx11_non_public_defaulted_functions ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_NUMERIC_LIMITS : cxx11_numeric_limits ; -alias cxx11_numeric_limits : cxx11_numeric_limits.output ; -explicit cxx11_numeric_limits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_REF_QUALIFIERS : cxx11_ref_qualifiers ; -alias cxx11_ref_qualifiers : cxx11_ref_qualifiers.output ; -explicit cxx11_ref_qualifiers ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_SMART_PTR : cxx11_smart_ptr ; -alias cxx11_smart_ptr : cxx11_smart_ptr.output ; -explicit cxx11_smart_ptr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_STD_ALIGN : cxx11_std_align ; -alias cxx11_std_align : cxx11_std_align.output ; -explicit cxx11_std_align ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES : cxx11_trailing_result_types ; -alias cxx11_trailing_result_types : cxx11_trailing_result_types.output ; -explicit cxx11_trailing_result_types ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS : cxx11_user_defined_literals ; -alias cxx11_user_defined_literals : cxx11_user_defined_literals.output ; -explicit cxx11_user_defined_literals ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_BINARY_LITERALS : cxx14_binary_literals ; -alias cxx14_binary_literals : cxx14_binary_literals.output ; -explicit cxx14_binary_literals ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_CONSTEXPR : cxx14_constexpr ; -alias cxx14_constexpr : cxx14_constexpr.output ; -explicit cxx14_constexpr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_DECLTYPE_AUTO : cxx14_decltype_auto ; -alias cxx14_decltype_auto : cxx14_decltype_auto.output ; -explicit cxx14_decltype_auto ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS : cxx14_digit_separators ; -alias cxx14_digit_separators : cxx14_digit_separators.output ; -explicit cxx14_digit_separators ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS : cxx14_generic_lambdas ; -alias cxx14_generic_lambdas : cxx14_generic_lambdas.output ; -explicit cxx14_generic_lambdas ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX : cxx14_hdr_shared_mutex ; -alias cxx14_hdr_shared_mutex : cxx14_hdr_shared_mutex.output ; -explicit cxx14_hdr_shared_mutex ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES : cxx14_initialized_lambda_captures ; -alias cxx14_initialized_lambda_captures : cxx14_initialized_lambda_captures.output ; -explicit cxx14_initialized_lambda_captures ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI : cxx14_aggregate_nsdmi ; -alias cxx14_aggregate_nsdmi : cxx14_aggregate_nsdmi.output ; -explicit cxx14_aggregate_nsdmi ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION : cxx14_return_type_deduction ; -alias cxx14_return_type_deduction : cxx14_return_type_deduction.output ; -explicit cxx14_return_type_deduction ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES : cxx14_variable_templates ; -alias cxx14_variable_templates : cxx14_variable_templates.output ; -explicit cxx14_variable_templates ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL : cxx11_hdr_functional ; -alias cxx11_hdr_functional : cxx11_hdr_functional.output ; -explicit cxx11_hdr_functional ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_DECLTYPE : cxx11_decltype ; -alias cxx11_decltype : cxx11_decltype.output ; -explicit cxx11_decltype ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_DECLTYPE_N3276 : cxx11_decltype_n3276 ; -alias cxx11_decltype_n3276 : cxx11_decltype_n3276.output ; -explicit cxx11_decltype_n3276 ; -run-simple test_case.cpp : : : TEST_BOOST_DEDUCED_TYPENAME : boost_deduced_typename ; -alias boost_deduced_typename : boost_deduced_typename.output ; -explicit boost_deduced_typename ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS : cxx11_defaulted_functions ; -alias cxx11_defaulted_functions : cxx11_defaulted_functions.output ; -explicit cxx11_defaulted_functions ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS : cxx11_deleted_functions ; -alias cxx11_deleted_functions : cxx11_deleted_functions.output ; -explicit cxx11_deleted_functions ; -run-simple test_case.cpp : : : TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS : dependent_nested_derivations ; -alias dependent_nested_derivations : dependent_nested_derivations.output ; -explicit dependent_nested_derivations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS : dependent_types_in_template_value_parameters ; -alias dependent_types_in_template_value_parameters : dependent_types_in_template_value_parameters.output ; -explicit dependent_types_in_template_value_parameters ; -run-simple test_case.cpp : : : TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE : exception_std_namespace ; -alias exception_std_namespace : exception_std_namespace.output ; -explicit exception_std_namespace ; -run-simple test_case.cpp : : : TEST_BOOST_NO_EXCEPTIONS : exceptions ; -alias exceptions : exceptions.output ; -explicit exceptions ; -run-simple test_case.cpp : : : TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS : explicit_function_template_arguments ; -alias explicit_function_template_arguments : explicit_function_template_arguments.output ; -explicit explicit_function_template_arguments ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS : cxx11_explicit_conversion_operators ; -alias cxx11_explicit_conversion_operators : cxx11_explicit_conversion_operators.output ; -explicit cxx11_explicit_conversion_operators ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE : cxx11_extern_template ; -alias cxx11_extern_template : cxx11_extern_template.output ; -explicit cxx11_extern_template ; -run-simple test_case.cpp : : : TEST_BOOST_NO_FENV_H : fenv_h ; -alias fenv_h : fenv_h.output ; -explicit fenv_h ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS : cxx11_fixed_length_variadic_template_expansion_packs ; -alias cxx11_fixed_length_variadic_template_expansion_packs : cxx11_fixed_length_variadic_template_expansion_packs.output ; -explicit cxx11_fixed_length_variadic_template_expansion_packs ; -run-simple test_case.cpp : : : TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING : function_template_ordering ; -alias function_template_ordering : function_template_ordering.output ; -explicit function_template_ordering ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS : cxx11_function_template_default_args ; -alias cxx11_function_template_default_args : cxx11_function_template_default_args.output ; -explicit cxx11_function_template_default_args ; -run-simple test_case.cpp : : : TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS : function_type_specializations ; -alias function_type_specializations : function_type_specializations.output ; -explicit function_type_specializations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS : ms_int64_numeric_limits ; -alias ms_int64_numeric_limits : ms_int64_numeric_limits.output ; -explicit ms_int64_numeric_limits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION : inclass_member_initialization ; -alias inclass_member_initialization : inclass_member_initialization.output ; -explicit inclass_member_initialization ; -run-simple test_case.cpp : : : TEST_BOOST_NO_INTEGRAL_INT64_T : integral_int64_t ; -alias integral_int64_t : integral_int64_t.output ; -explicit integral_int64_t ; -run-simple test_case.cpp : : : TEST_BOOST_NO_IOSFWD : iosfwd ; -alias iosfwd : iosfwd.output ; -explicit iosfwd ; -run-simple test_case.cpp : : : TEST_BOOST_NO_IOSTREAM : iostream ; -alias iostream : iostream.output ; -explicit iostream ; -run-simple test_case.cpp : : : TEST_BOOST_NO_IS_ABSTRACT : is_abstract ; -alias is_abstract : is_abstract.output ; -explicit is_abstract ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS : templated_iterator_constructors ; -alias templated_iterator_constructors : templated_iterator_constructors.output ; -explicit templated_iterator_constructors ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_LAMBDAS : cxx11_lambdas ; -alias cxx11_lambdas : cxx11_lambdas.output ; -explicit cxx11_lambdas ; -run-simple test_case.cpp : : : TEST_BOOST_NO_LIMITS : limits ; -alias limits : limits.output ; -explicit limits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS : limits_compile_time_constants ; -alias limits_compile_time_constants : limits_compile_time_constants.output ; -explicit limits_compile_time_constants ; -run-simple test_case.cpp : : : TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS : long_long_numeric_limits ; -alias long_long_numeric_limits : long_long_numeric_limits.output ; -explicit long_long_numeric_limits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_LONG_LONG : long_long ; -alias long_long : long_long.output ; -explicit long_long ; -run-simple test_case.cpp : : : TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS : member_function_specializations ; -alias member_function_specializations : member_function_specializations.output ; -explicit member_function_specializations ; -run-simple test_case.cpp : : : TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD : member_template_keyword ; -alias member_template_keyword : member_template_keyword.output ; -explicit member_template_keyword ; -run-simple test_case.cpp : : : TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS : pointer_to_member_template_parameters ; -alias pointer_to_member_template_parameters : pointer_to_member_template_parameters.output ; -explicit pointer_to_member_template_parameters ; -run-simple test_case.cpp : : : TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS : member_template_friends ; -alias member_template_friends : member_template_friends.output ; -explicit member_template_friends ; -run-simple test_case.cpp : : : TEST_BOOST_NO_MEMBER_TEMPLATES : member_templates ; -alias member_templates : member_templates.output ; -explicit member_templates ; -run-simple test_case.cpp : : : TEST_BOOST_NO_NESTED_FRIENDSHIP : nested_friendship ; -alias nested_friendship : nested_friendship.output ; -explicit nested_friendship ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_NOEXCEPT : cxx11_noexcept ; -alias cxx11_noexcept : cxx11_noexcept.output ; -explicit cxx11_noexcept ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_NULLPTR : cxx11_nullptr ; -alias cxx11_nullptr : cxx11_nullptr.output ; -explicit cxx11_nullptr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_OPERATORS_IN_NAMESPACE : operators_in_namespace ; -alias operators_in_namespace : operators_in_namespace.output ; -explicit operators_in_namespace ; -run-simple test_case.cpp : : : TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS : partial_specialization_implicit_default_args ; -alias partial_specialization_implicit_default_args : partial_specialization_implicit_default_args.output ; -explicit partial_specialization_implicit_default_args ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION : template_partial_specialization ; -alias template_partial_specialization : template_partial_specialization.output ; -explicit template_partial_specialization ; -run-simple test_case.cpp : : : TEST_BOOST_NO_PRIVATE_IN_AGGREGATE : private_in_aggregate ; -alias private_in_aggregate : private_in_aggregate.output ; -explicit private_in_aggregate ; -run-simple test_case.cpp : : : TEST_BOOST_NO_POINTER_TO_MEMBER_CONST : pointer_to_member_const ; -alias pointer_to_member_const : pointer_to_member_const.output ; -explicit pointer_to_member_const ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_RANGE_BASED_FOR : cxx11_range_based_for ; -alias cxx11_range_based_for : cxx11_range_based_for.output ; -explicit cxx11_range_based_for ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_RAW_LITERALS : cxx11_raw_literals ; -alias cxx11_raw_literals : cxx11_raw_literals.output ; -explicit cxx11_raw_literals ; -run-simple test_case.cpp : : : TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION : unreachable_return_detection ; -alias unreachable_return_detection : unreachable_return_detection.output ; -explicit unreachable_return_detection ; -run-simple test_case.cpp : : : TEST_BOOST_NO_RTTI : rtti ; -alias rtti : rtti.output ; -explicit rtti ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_RVALUE_REFERENCES : cxx11_rvalue_references ; -alias cxx11_rvalue_references : cxx11_rvalue_references.output ; -explicit cxx11_rvalue_references ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_SCOPED_ENUMS : cxx11_scoped_enums ; -alias cxx11_scoped_enums : cxx11_scoped_enums.output ; -explicit cxx11_scoped_enums ; -run-simple test_case.cpp : : : TEST_BOOST_NO_SFINAE : sfinae ; -alias sfinae : sfinae.output ; -explicit sfinae ; -run-simple test_case.cpp : : : TEST_BOOST_NO_SFINAE_EXPR : sfinae_expr ; -alias sfinae_expr : sfinae_expr.output ; -explicit sfinae_expr ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STRINGSTREAM : stringstream ; -alias stringstream : stringstream.output ; -explicit stringstream ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_STATIC_ASSERT : cxx11_static_assert ; -alias cxx11_static_assert : cxx11_static_assert.output ; -explicit cxx11_static_assert ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_ALLOCATOR : std_allocator ; -alias std_allocator : std_allocator.output ; -explicit std_allocator ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_DISTANCE : std_distance ; -alias std_distance : std_distance.output ; -explicit std_distance ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_ITERATOR_TRAITS : std_iterator_traits ; -alias std_iterator_traits : std_iterator_traits.output ; -explicit std_iterator_traits ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_ITERATOR : std_iterator ; -alias std_iterator : std_iterator.output ; -explicit std_iterator ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_LOCALE : std_locale ; -alias std_locale : std_locale.output ; -explicit std_locale ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_MESSAGES : std_messages ; -alias std_messages : std_messages.output ; -explicit std_messages ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_MIN_MAX : std_min_max ; -alias std_min_max : std_min_max.output ; -explicit std_min_max ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN : std_output_iterator_assign ; -alias std_output_iterator_assign : std_output_iterator_assign.output ; -explicit std_output_iterator_assign ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_TYPEINFO : std_typeinfo ; -alias std_typeinfo : std_typeinfo.output ; -explicit std_typeinfo ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_USE_FACET : std_use_facet ; -alias std_use_facet : std_use_facet.output ; -explicit std_use_facet ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_WSTREAMBUF : std_wstreambuf ; -alias std_wstreambuf : std_wstreambuf.output ; -explicit std_wstreambuf ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STD_WSTRING : std_wstring ; -alias std_wstring : std_wstring.output ; -explicit std_wstring ; -run-simple test_case.cpp : : : TEST_BOOST_NO_STDC_NAMESPACE : stdc_namespace ; -alias stdc_namespace : stdc_namespace.output ; -explicit stdc_namespace ; -run-simple test_case.cpp : : : TEST_BOOST_NO_SWPRINTF : swprintf ; -alias swprintf : swprintf.output ; -explicit swprintf ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS : cxx11_local_class_template_parameters ; -alias cxx11_local_class_template_parameters : cxx11_local_class_template_parameters.output ; -explicit cxx11_local_class_template_parameters ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES : cxx11_template_aliases ; -alias cxx11_template_aliases : cxx11_template_aliases.output ; -explicit cxx11_template_aliases ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TEMPLATED_IOSTREAMS : templated_iostreams ; -alias templated_iostreams : templated_iostreams.output ; -explicit templated_iostreams ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TEMPLATE_TEMPLATES : template_templates ; -alias template_templates : template_templates.output ; -explicit template_templates ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP : two_phase_name_lookup ; -alias two_phase_name_lookup : two_phase_name_lookup.output ; -explicit two_phase_name_lookup ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TYPEID : typeid ; -alias typeid : typeid.output ; -explicit typeid ; -run-simple test_case.cpp : : : TEST_BOOST_NO_TYPENAME_WITH_CTOR : typename_with_ctor ; -alias typename_with_ctor : typename_with_ctor.output ; -explicit typename_with_ctor ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_UNICODE_LITERALS : cxx11_unicode_literals ; -alias cxx11_unicode_literals : cxx11_unicode_literals.output ; -explicit cxx11_unicode_literals ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX : cxx11_unified_initialization_syntax ; -alias cxx11_unified_initialization_syntax : cxx11_unified_initialization_syntax.output ; -explicit cxx11_unified_initialization_syntax ; -run-simple test_case.cpp : : : TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL : boost_function_scope_using_declaration_breaks_adl ; -alias boost_function_scope_using_declaration_breaks_adl : boost_function_scope_using_declaration_breaks_adl.output ; -explicit boost_function_scope_using_declaration_breaks_adl ; -run-simple test_case.cpp : : : TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE : using_declaration_overloads_from_typename_base ; -alias using_declaration_overloads_from_typename_base : using_declaration_overloads_from_typename_base.output ; -explicit using_declaration_overloads_from_typename_base ; -run-simple test_case.cpp : : : TEST_BOOST_NO_USING_TEMPLATE : using_template ; -alias using_template : using_template.output ; -explicit using_template ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_VARIADIC_MACROS : cxx11_variadic_macros ; -alias cxx11_variadic_macros : cxx11_variadic_macros.output ; -explicit cxx11_variadic_macros ; -run-simple test_case.cpp : : : TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES : cxx11_variadic_templates ; -alias cxx11_variadic_templates : cxx11_variadic_templates.output ; -explicit cxx11_variadic_templates ; -run-simple test_case.cpp : : : TEST_BOOST_NO_VOID_RETURNS : void_returns ; -alias void_returns : void_returns.output ; -explicit void_returns ; -run-simple test_case.cpp : : : TEST_BOOST_NO_INTRINSIC_WCHAR_T : intrinsic_wchar_t ; -alias intrinsic_wchar_t : intrinsic_wchar_t.output ; -explicit intrinsic_wchar_t ; +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_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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 6193e82d..bf309432 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Thu Aug 13 16:32:12 2015 +// This file was automatically generated on Fri Jul 1 18:47:25 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -405,6 +405,10 @@ namespace test = boost_no_cxx11_smart_ptr; # include "../test/boost_no_cxx11_std_align.ipp" namespace test = boost_no_cxx11_std_align; #endif +#ifdef TEST_BOOST_NO_CXX11_THREAD_LOCAL +# include "../test/boost_no_cxx11_thread_local.ipp" +namespace test = boost_no_cxx11_thread_local; +#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; diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index acda8ff0..691a11c5 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3115,6 +3115,19 @@ + +

+ BOOST_NO_CXX11_THREAD_LOCAL +

+ + +

+ The compiler does not support the thread_local + storage specifier. +

+ + +

BOOST_NO_CXX11_TRAILING_RESULT_TYPES @@ -5635,7 +5648,7 @@

- See Guidelines + See Guidelines for Authors of Boost Libraries Containing Separate Source

diff --git a/doc/html/index.html b/doc/html/index.html index b1e51ae0..5ff77786 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -988,7 +988,7 @@
- +

Last revised: August 13, 2015 at 16:11:58 GMT

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


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 0973c365..e9944040 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -702,6 +702,8 @@ scoped enumerations (`enum class`). ]] [[`BOOST_NO_CXX11_TEMPLATE_ALIASES`][The compiler does not support template aliases. ]] +[[`BOOST_NO_CXX11_THREAD_LOCAL`][The compiler does not support the `thread_local` storage specifier. +]] [[`BOOST_NO_CXX11_TRAILING_RESULT_TYPES`][The compiler does not support the new function result type specification syntax (e.g. `auto foo(T) -> T;`).]] [[`BOOST_NO_CXX11_UNICODE_LITERALS`][The compiler does not support @@ -1360,7 +1362,7 @@ include separate source code, and are intended to address several issues: * Fixing the ABI of the compiled library * Selecting which compiled library to link against based upon the compilers settings -See [@http://svn.boost.org/trac/boost/wiki/Guidelines/Separate Guidelines for Authors of Boost Libraries Containing Separate Source] +See [@http://www.boost.org/development/separate_compilation.html Guidelines for Authors of Boost Libraries Containing Separate Source] [section Macros controlling shared library symbol visibility] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 80dd2300..ccd930ea 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -196,6 +196,7 @@ #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) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 01355bb7..150e3c0d 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -39,9 +39,20 @@ # define BOOST_NO_TYPEID #endif -#if defined(__int64) && !defined(__GNUC__) +#if !__has_feature(cxx_thread_local) +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif + +#ifdef __is_identifier +#if !__is_identifier(__int64) && !defined(__GNUC__) # define BOOST_HAS_MS_INT64 #endif +#endif + +#if __has_include() +# define BOOST_HAS_STDINT_H +#endif + #define BOOST_HAS_NRVO @@ -107,11 +118,16 @@ // // Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t // -#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) # define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR32_T #endif +#if defined(_MSC_VER) && (_MSC_VER >= 1800) && !defined(__GNUC__) +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_LOG1P +#endif + #if !__has_feature(cxx_constexpr) # define BOOST_NO_CXX11_CONSTEXPR #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 02bd792a..e2f6061b 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -122,6 +122,7 @@ #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) diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp index 278222dc..09841604 100644 --- a/include/boost/config/compiler/comeau.hpp +++ b/include/boost/config/compiler/comeau.hpp @@ -12,7 +12,7 @@ // Comeau C++ compiler setup: -#include "boost/config/compiler/common_edg.hpp" +#include #if (__COMO_VERSION__ <= 4245) diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index b92e574d..c09faeb0 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -106,6 +106,7 @@ #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) diff --git a/include/boost/config/compiler/compaq_cxx.hpp b/include/boost/config/compiler/compaq_cxx.hpp index b44486c6..4d6b8ab3 100644 --- a/include/boost/config/compiler/compaq_cxx.hpp +++ b/include/boost/config/compiler/compaq_cxx.hpp @@ -9,7 +9,7 @@ #define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER) -#include "boost/config/compiler/common_edg.hpp" +#include // // versions check: diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 3f660433..837f8152 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -21,7 +21,7 @@ # error "Unsupported Cray compiler, please try running the configure script." #endif -#include "boost/config/compiler/common_edg.hpp" +#include // @@ -60,6 +60,7 @@ #define BOOST_NO_CXX11_CHAR16_T #define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_FINAL +#define BOOST_NO_CXX11_THREAD_LOCAL //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index a3d293c7..c344aae0 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -82,6 +82,7 @@ #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) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index fbd3dd9c..e319d049 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -252,6 +252,7 @@ // #if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11) # define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_THREAD_LOCAL #endif // C++0x features in 4.8.1 and later diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index c11f29dd..b56c7862 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -59,7 +59,8 @@ # 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_FINAL +# define BOOST_NO_CXX11_THREAD_LOCAL // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) diff --git a/include/boost/config/compiler/greenhills.hpp b/include/boost/config/compiler/greenhills.hpp index 038b6b2b..a76a07cf 100644 --- a/include/boost/config/compiler/greenhills.hpp +++ b/include/boost/config/compiler/greenhills.hpp @@ -9,7 +9,7 @@ #define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs) -#include "boost/config/compiler/common_edg.hpp" +#include // // versions check: diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index fb63839a..a773b8c4 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -13,7 +13,7 @@ // HP aCC C++ compiler setup: #if defined(__EDG__) -#include "boost/config/compiler/common_edg.hpp" +#include #endif #if (__HP_aCC <= 33100) @@ -123,6 +123,7 @@ #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES #define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_REF_QUALIFIERS +#define BOOST_NO_CXX11_THREAD_LOCAL /* See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 88ac023a..80969e9e 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -90,7 +90,7 @@ #else -#include "boost/config/compiler/common_edg.hpp" +#include #if defined(__INTEL_COMPILER) #if __INTEL_COMPILER == 9999 diff --git a/include/boost/config/compiler/kai.hpp b/include/boost/config/compiler/kai.hpp index 2337e6a8..960d501c 100644 --- a/include/boost/config/compiler/kai.hpp +++ b/include/boost/config/compiler/kai.hpp @@ -9,7 +9,7 @@ // Kai C++ compiler setup: -#include "boost/config/compiler/common_edg.hpp" +#include # if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG) // at least on Sun, the contents of is not in namespace std diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index c9301434..3c5e2286 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -125,6 +125,7 @@ #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) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 76045bcd..084f9e15 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -74,6 +74,7 @@ #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) diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 7c211c45..a5e65af4 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -82,6 +82,7 @@ # 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) diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index e5605c9e..fa2d5e40 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -120,6 +120,7 @@ #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) diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp index 90688314..54433c99 100644 --- a/include/boost/config/compiler/sgi_mipspro.hpp +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -9,7 +9,7 @@ #define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION) -#include "boost/config/compiler/common_edg.hpp" +#include // // Threading support: diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 6017660c..c43767f2 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -132,6 +132,7 @@ #define BOOST_NO_CXX11_DECLTYPE_N3276 #define BOOST_NO_CXX11_USER_DEFINED_LITERALS #define BOOST_NO_CXX11_REF_QUALIFIERS +#define BOOST_NO_CXX11_THREAD_LOCAL #endif #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 6c228eab..3fbed9fa 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -131,6 +131,7 @@ #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) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index baaab589..72caff49 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -158,6 +158,11 @@ # define BOOST_NO_CXX11_DECLTYPE_N3276 #endif +#if _MSC_FULL_VER >= 180020827 +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_LOG1P +#endif + // C++11 features supported by VC++ 14 (aka 2015) // #if (_MSC_FULL_VER < 190023026) @@ -175,6 +180,14 @@ # define BOOST_NO_CXX14_BINARY_LITERALS # define BOOST_NO_CXX14_GENERIC_LAMBDAS # define BOOST_NO_CXX14_DIGIT_SEPARATORS +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif +// C++11 features supported by VC++ 14 update 3 (aka 2015) +// +#if (_MSC_FULL_VER < 190024210) +# define BOOST_NO_CXX14_VARIABLE_TEMPLATES +# define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_CXX11_CONSTEXPR #endif // MSVC including version 14 has not yet completely @@ -193,15 +206,11 @@ // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues // (Niels Dekker, LKEB, May 2010) #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -// C++11 features not supported by any versions -#define BOOST_NO_SFINAE_EXPR +// +// C++ 11: +// #define BOOST_NO_TWO_PHASE_NAME_LOOKUP // -// This is somewhat supported in VC14, but we may need to wait for -// a service release before enabling: -// -#define BOOST_NO_CXX11_CONSTEXPR - // C++ 14: #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) # define BOOST_NO_CXX14_AGGREGATE_NSDMI @@ -209,9 +218,6 @@ #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) # define BOOST_NO_CXX14_CONSTEXPR #endif -#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) -# define BOOST_NO_CXX14_VARIABLE_TEMPLATES -#endif // // prefix and suffix headers: diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index e369ecef..2aaafc3b 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -238,6 +238,10 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +#if !__has_feature(cxx_thread_local) +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif + #if __cplusplus < 201400 // All versions with __cplusplus above this value seem to support this: # define BOOST_NO_CXX14_DIGIT_SEPARATORS diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 4d87093a..7a757084 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -122,27 +122,27 @@ // // This section allows dependency scanners to find all the headers we *might* include: // -#include "boost/config/compiler/gcc_xml.hpp" -#include "boost/config/compiler/cray.hpp" -#include "boost/config/compiler/comeau.hpp" -#include "boost/config/compiler/pathscale.hpp" -#include "boost/config/compiler/intel.hpp" -#include "boost/config/compiler/clang.hpp" -#include "boost/config/compiler/digitalmars.hpp" -#include "boost/config/compiler/gcc.hpp" -#include "boost/config/compiler/kai.hpp" -#include "boost/config/compiler/sgi_mipspro.hpp" -#include "boost/config/compiler/compaq_cxx.hpp" -#include "boost/config/compiler/greenhills.hpp" -#include "boost/config/compiler/codegear.hpp" -#include "boost/config/compiler/borland.hpp" -#include "boost/config/compiler/metrowerks.hpp" -#include "boost/config/compiler/sunpro_cc.hpp" -#include "boost/config/compiler/hp_acc.hpp" -#include "boost/config/compiler/mpw.hpp" -#include "boost/config/compiler/vacpp.hpp" -#include "boost/config/compiler/pgi.hpp" -#include "boost/config/compiler/visualc.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 9718bedc..a5efcb76 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -158,6 +158,18 @@ # define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif +// std::auto_ptr isn't provided with _GLIBCXX_DEPRECATED=0 (GCC 4.5 and earlier) +// or _GLIBCXX_USE_DEPRECATED=0 (GCC 4.6 and later). +#if defined(BOOST_LIBSTDCXX11) +# if BOOST_LIBSTDCXX_VERSION < 40600 +# if !_GLIBCXX_DEPRECATED +# define BOOST_NO_AUTO_PTR +# endif +# elif !_GLIBCXX_USE_DEPRECATED +# define BOOST_NO_AUTO_PTR +# endif +#endif + // C++0x headers in GCC 4.3.0 and later // #if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index ce6f79f8..a382352c 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 106100 +#define BOOST_VERSION 106200 // // 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_61" +#define BOOST_LIB_VERSION "1_62" #endif diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 9d0b1e09..01f53d21 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 Thu Aug 13 16:32:12 2015 +# This file was automatically generated on Fri Jul 1 18:47:25 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -319,6 +319,9 @@ test-suite "BOOST_NO_CXX11_SMART_PTR" : test-suite "BOOST_NO_CXX11_STD_ALIGN" : [ run ../no_cxx11_std_align_pass.cpp ] [ compile-fail ../no_cxx11_std_align_fail.cpp ] ; +test-suite "BOOST_NO_CXX11_THREAD_LOCAL" : +[ run ../no_cxx11_thread_local_pass.cpp ] +[ compile-fail ../no_cxx11_thread_local_fail.cpp ] ; test-suite "BOOST_NO_CXX11_TRAILING_RESULT_TYPES" : [ run ../no_cxx11_trailing_result_types_pass.cpp ] [ compile-fail ../no_cxx11_trailing_result_types_fail.cpp ] ; diff --git a/test/boost_no_cxx11_thread_local.ipp b/test/boost_no_cxx11_thread_local.ipp new file mode 100644 index 00000000..795ee746 --- /dev/null +++ b/test/boost_no_cxx11_thread_local.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2012. +// 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_CXX11_THREAD_LOCAL +// TITLE: thread_local +// DESCRIPTION: The compiler supports the thread_local storage specifier. + +#include + + +namespace boost_no_cxx11_thread_local{ + +int test() +{ + static thread_local std::string local("hello"); + return 0; +} + +} + diff --git a/test/boost_no_ret_det.ipp b/test/boost_no_ret_det.ipp index 253e4584..e57c9ed7 100644 --- a/test/boost_no_ret_det.ipp +++ b/test/boost_no_ret_det.ipp @@ -12,7 +12,7 @@ // compilers insist on it, while other issue a // bunch of warnings if it is in fact present. -#if defined( BOOST_NO_EXCEPTIONS ) && !defined( _MSC_VER ) +#if defined( BOOST_NO_EXCEPTIONS ) # include #endif @@ -20,7 +20,7 @@ namespace boost_no_unreachable_return_detection{ int checker() { -#if defined( BOOST_NO_EXCEPTIONS ) && !defined( _MSC_VER ) +#if defined( BOOST_NO_EXCEPTIONS ) && (!defined( _MSC_VER ) || defined(__clang__)) abort(); #else throw 0; diff --git a/test/config_info.cpp b/test/config_info.cpp index bd3e849d..96d2e397 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1057,6 +1057,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT); PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN); PRINT_MACRO(BOOST_NO_CXX11_TEMPLATE_ALIASES); + PRINT_MACRO(BOOST_NO_CXX11_THREAD_LOCAL); PRINT_MACRO(BOOST_NO_CXX11_TRAILING_RESULT_TYPES); PRINT_MACRO(BOOST_NO_CXX11_UNICODE_LITERALS); PRINT_MACRO(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX); @@ -1134,6 +1135,12 @@ void print_boost_macros() + + + + + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 18b3726d..7fbcb73d 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Thu Aug 13 16:32:12 2015 +// This file was automatically generated on Fri Jul 1 18:47:25 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -252,6 +252,11 @@ namespace boost_no_cxx11_smart_ptr = empty_boost; #else namespace boost_no_cxx11_std_align = empty_boost; #endif +#ifndef BOOST_NO_CXX11_THREAD_LOCAL +#include "boost_no_cxx11_thread_local.ipp" +#else +namespace boost_no_cxx11_thread_local = empty_boost; +#endif #ifndef BOOST_NO_CXX11_TRAILING_RESULT_TYPES #include "boost_no_cxx11_trailing_result_types.ipp" #else @@ -1491,6 +1496,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_STD_ALIGN at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx11_thread_local::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX11_THREAD_LOCAL at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_trailing_result_types::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_TRAILING_RESULT_TYPES at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_cxx11_thread_local_fail.cpp b/test/no_cxx11_thread_local_fail.cpp new file mode 100644 index 00000000..957c622e --- /dev/null +++ b/test/no_cxx11_thread_local_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jul 1 18:47:25 2016 +// 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_THREAD_LOCAL +// This file should not compile, if it does then +// BOOST_NO_CXX11_THREAD_LOCAL should not be defined. +// See file boost_no_cxx11_thread_local.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_THREAD_LOCAL +#include "boost_no_cxx11_thread_local.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_thread_local::test(); +} + diff --git a/test/no_cxx11_thread_local_pass.cpp b/test/no_cxx11_thread_local_pass.cpp new file mode 100644 index 00000000..3e54ca2b --- /dev/null +++ b/test/no_cxx11_thread_local_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jul 1 18:47:25 2016 +// 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_THREAD_LOCAL +// This file should compile, if it does not then +// BOOST_NO_CXX11_THREAD_LOCAL should be defined. +// See file boost_no_cxx11_thread_local.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_THREAD_LOCAL +#include "boost_no_cxx11_thread_local.ipp" +#else +namespace boost_no_cxx11_thread_local = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_thread_local::test(); +} + diff --git a/tools/generate.cpp b/tools/generate.cpp index 625e93f3..0ea4b4cc 100644 --- a/tools/generate.cpp +++ b/tools/generate.cpp @@ -208,20 +208,13 @@ void write_build_check_jamfile() "# Boost Software License, Version 1.0. (See accompanying file \n" "# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n\n" "import modules ;\nimport path ; \n\n" - "actions simple_run_action\n" - "{\n" - " $(>) > $(<)\n" - "}\n" "\n" - "rule run-simple ( sources + : args * : input-files * : requirements * : target-name )\n" + "rule run-simple ( requirements * : target-name )\n" "{\n" - " obj $(target-name)_obj : $(sources) : $(requirements) ;\n" + " obj $(target-name)_obj : test_case.cpp : $(requirements) ;\n" " explicit $(target-name)_obj ;\n" - " exe $(target-name)_exe : $(target-name)_obj : $(requirements) ;\n" - " explicit $(target-name)_exe ;\n" - " #testing.capture-output $(target-name)_output : $(target-name) : $(requirements) $(target-name) ;\n" - " make $(target-name).output : $(target-name)_exe : @simple_run_action ;\n" - " explicit $(target-name).output ;\n" + " unit-test $(target-name) : $(target-name)_obj : $(requirements) ;\n" + " explicit $(target-name) ;\n" "}\n\n" ; ofs << build_config_jamfile.str() << std::endl; @@ -301,9 +294,7 @@ void process_ipp_file(const fs::path& file, bool positive_test) // 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_case.cpp : : : TEST_" << macro_name << " : " << feature_name << " ;\n"; - build_config_jamfile << "alias " << feature_name << " : " << feature_name << ".output ;\n"; - build_config_jamfile << "explicit " << feature_name << " ;\n"; + build_config_jamfile << "run-simple TEST_" << macro_name << " : " << feature_name << " ;\n"; } int cpp_main(int argc, char* argv[]) From 5cb5c8e82d09bec55b8b778f3c7b9dba1d0ae6db Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 26 Sep 2016 17:15:19 -0400 Subject: [PATCH 003/261] .gitignore config/checks/architecture/bin/ --- checks/architecture/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 checks/architecture/.gitignore 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 From d7bb39764b243a299cd75d85da6774df8a7aefd0 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 7 Oct 2016 23:07:33 -0500 Subject: [PATCH 004/261] Add, and update, documentation build targets. --- doc/Jamfile.v2 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 1f7056bd..176a5a71 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -59,4 +59,8 @@ boostbook standalone install pdfinstall : standalone/pdf : . PDF ; explicit pdfinstall ; - +############################################################################### +alias boostdoc ; +explicit boostdoc ; +alias boostrelease : standalone ; +explicit boostrelease ; From 4749434d476ab23427fe727a5e42d52fe61d048d Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Mon, 14 Nov 2016 16:35:54 +0100 Subject: [PATCH 005/261] Update for Visual Studio 15 Preview 5 and RC - Aggregate NSDMI and relaxed constexpr are supported - _MSC_VER is 1910 --- include/boost/config/compiler/visualc.hpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 72caff49..cdbc9b67 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -190,6 +190,13 @@ # define BOOST_NO_CXX11_CONSTEXPR #endif +// C++14 features supported by VC++ 15 Preview 5 +// +#if (_MSC_VER < 1910) +# define BOOST_NO_CXX14_AGGREGATE_NSDMI +# define BOOST_NO_CXX14_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 @@ -210,14 +217,6 @@ // C++ 11: // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP -// -// C++ 14: -#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) -# define BOOST_NO_CXX14_AGGREGATE_NSDMI -#endif -#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) -# define BOOST_NO_CXX14_CONSTEXPR -#endif // // prefix and suffix headers: @@ -294,8 +293,8 @@ #endif // -// last known and checked version is 19.00.23026 (VC++ 2015 RTM): -#if (_MSC_VER > 1900) +// last known and checked version is 19.10.24629 (VC++ 2017 RC): +#if (_MSC_VER > 1910) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From 4fc61307814b344ace6c21b54bf3bb73126c2224 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 21 Nov 2016 17:53:34 -0800 Subject: [PATCH 006/261] BOOST_NO_CXX17_STD_INVOKE for libc++ Make sure that BOOST_NO_CXX17_STD_INVOKE is defined for C++03/11/14 builds. --- include/boost/config/stdlib/libcpp.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 96cf57c3..21eafe89 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -73,8 +73,11 @@ #if _LIBCPP_VERSION < 3700 // libc++ uses a non-standard messages_base #define BOOST_NO_STD_MESSAGES +#endif + // C++17 features -#define BOOST_NO_CXX17_STD_INVOKE +#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_INVOKE #endif #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) From fa7121c0fea09600d62e59003d377e50f25e7eed Mon Sep 17 00:00:00 2001 From: akumta Date: Wed, 23 Nov 2016 08:17:25 -0800 Subject: [PATCH 007/261] Update sunpro_cc.hpp define BOOST_NO_CXX14_DECLTYPE_AUTO when C++14 standard is not in action --- include/boost/config/compiler/sunpro_cc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 8f07e0e9..ac259fce 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -152,7 +152,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.... From 0229c6e5cc123d3dde298589d0b074ef0c552738 Mon Sep 17 00:00:00 2001 From: Steve Mc Gregor Date: Fri, 2 Dec 2016 00:08:16 -0500 Subject: [PATCH 008/261] Adds .gitignore to prevent tracking changes of compiled files under checks/architecture/bin --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..17bac5cd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +checks/architecture/bin From 8f9f27336cb59454530d8f2d85761c6e825146f9 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 3 Dec 2016 18:09:18 +0000 Subject: [PATCH 009/261] Merge branch 'develop' # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- checks/Jamfile.v2 | 2 +- checks/architecture/.gitignore | 1 + include/boost/config/compiler/sunpro_cc.hpp | 2 +- include/boost/config/compiler/visualc.hpp | 19 +++++++++---------- include/boost/config/stdlib/libcpp.hpp | 5 ++++- 5 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 checks/architecture/.gitignore diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 1b5e2fd9..fc74ed39 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -9,7 +9,7 @@ import modules ; import path ; - +import testing ; rule run-simple ( requirements * : target-name ) { 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/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 8f07e0e9..ac259fce 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -152,7 +152,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.... diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 72caff49..cdbc9b67 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -190,6 +190,13 @@ # define BOOST_NO_CXX11_CONSTEXPR #endif +// C++14 features supported by VC++ 15 Preview 5 +// +#if (_MSC_VER < 1910) +# define BOOST_NO_CXX14_AGGREGATE_NSDMI +# define BOOST_NO_CXX14_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 @@ -210,14 +217,6 @@ // C++ 11: // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP -// -// C++ 14: -#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) -# define BOOST_NO_CXX14_AGGREGATE_NSDMI -#endif -#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) -# define BOOST_NO_CXX14_CONSTEXPR -#endif // // prefix and suffix headers: @@ -294,8 +293,8 @@ #endif // -// last known and checked version is 19.00.23026 (VC++ 2015 RTM): -#if (_MSC_VER > 1900) +// last known and checked version is 19.10.24629 (VC++ 2017 RC): +#if (_MSC_VER > 1910) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 96cf57c3..21eafe89 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -73,8 +73,11 @@ #if _LIBCPP_VERSION < 3700 // libc++ uses a non-standard messages_base #define BOOST_NO_STD_MESSAGES +#endif + // C++17 features -#define BOOST_NO_CXX17_STD_INVOKE +#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_INVOKE #endif #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) From 7a3fe1f8747a70c036b5728662547f706ac901eb Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Fri, 9 Dec 2016 01:11:53 +0900 Subject: [PATCH 010/261] Update c++14 constexpr test. Compiler should allow non-const member function. --- test/boost_no_cxx14_constexpr.ipp | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) 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; } } From d1c399f9714f9676c92906f6c500813ab6bfad7c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 9 Dec 2016 18:10:32 +0000 Subject: [PATCH 011/261] Clang/libc++ : Tentatively enable and in C++03 mode. --- include/boost/config/stdlib/libcpp.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 21eafe89..dca0ea7b 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -32,10 +32,14 @@ #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 From 68b7cc875927e203b3560d6cf21a1a65dc873a07 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Sun, 11 Dec 2016 12:25:53 +0100 Subject: [PATCH 012/261] defect macro for C++17 feature `std::apply()` --- checks/Jamfile.v2 | 5 +-- checks/test_case.cpp | 6 +++- include/boost/config/stdlib/dinkumware.hpp | 1 + include/boost/config/stdlib/libcomo.hpp | 1 + include/boost/config/stdlib/libcpp.hpp | 3 ++ include/boost/config/stdlib/libstdcpp3.hpp | 3 ++ include/boost/config/stdlib/modena.hpp | 1 + include/boost/config/stdlib/msl.hpp | 1 + include/boost/config/stdlib/roguewave.hpp | 1 + include/boost/config/stdlib/sgi.hpp | 1 + include/boost/config/stdlib/stlport.hpp | 1 + include/boost/config/stdlib/vacpp.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_std_apply.ipp | 28 ++++++++++++++++ test/config_info.cpp | 2 ++ test/config_test.cpp | 12 ++++++- test/no_cxx17_std_apply_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx17_std_apply_pass.cpp | 37 ++++++++++++++++++++++ 18 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 test/boost_no_cxx17_std_apply.ipp create mode 100644 test/no_cxx17_std_apply_fail.cpp create mode 100644 test/no_cxx17_std_apply_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index fc74ed39..e39fa226 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 Sun Dec 11 12:22:05 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -9,7 +9,7 @@ import modules ; import path ; -import testing ; + rule run-simple ( requirements * : target-name ) { @@ -131,6 +131,7 @@ run-simple TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES : cxx14_initi 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_APPLY : cxx17_std_apply ; run-simple TEST_BOOST_NO_CXX17_STD_INVOKE : cxx17_std_invoke ; run-simple TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL : cxx11_hdr_functional ; run-simple TEST_BOOST_NO_CXX11_DECLTYPE : cxx11_decltype ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index d3ad56ca..caad5bbf 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 Sun Dec 11 12:22:05 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -457,6 +457,10 @@ namespace test = boost_no_cxx14_return_type_deduction; # include "../test/boost_no_cxx14_var_templ.ipp" namespace test = boost_no_cxx14_variable_templates; #endif +#ifdef TEST_BOOST_NO_CXX17_STD_APPLY +# include "../test/boost_no_cxx17_std_apply.ipp" +namespace test = boost_no_cxx17_std_apply; +#endif #ifdef TEST_BOOST_NO_CXX17_STD_INVOKE # include "../test/boost_no_cxx17_std_invoke.ipp" namespace test = boost_no_cxx17_std_invoke; diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 5f7a0321..6094bcc1 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -159,6 +159,7 @@ // C++17 features #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #endif diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 07c48965..a7be537c 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -73,6 +73,7 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE // diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index dca0ea7b..d5d2fd61 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -83,6 +83,9 @@ #if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_INVOKE #endif +#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_APPLY +#endif #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 diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index d4596498..1cbebb87 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -261,6 +261,9 @@ #if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_INVOKE #endif +#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_APPLY +#endif #if defined(__has_include) #if !__has_include() diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 7092e9ba..27ca4531 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -62,6 +62,7 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #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..c9e6b281 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -86,6 +86,7 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #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..420fa26b 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -198,4 +198,5 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 1623de38..a1ef7343 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -156,6 +156,7 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #define BOOST_STDLIB "SGI standard library" diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 6d796128..971b7813 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -246,6 +246,7 @@ namespace boost { using std::min; using std::max; } #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #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..9d93ae4e 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -62,6 +62,7 @@ #endif // C++17 features +# define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_STD_INVOKE #define BOOST_STDLIB "Visual Age default standard library" diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index d76b6cf3..c7b9a4f3 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 Sun Dec 11 12:22:04 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -358,6 +358,9 @@ test-suite "BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION" : 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_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 ] ; 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/config_info.cpp b/test/config_info.cpp index 8bb1e441..0e67f71b 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1074,6 +1074,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES); PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION); PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES); + PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); @@ -1145,6 +1146,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index a887972d..2e4c23e3 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 Sun Dec 11 12:22:04 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -317,6 +317,11 @@ namespace boost_no_cxx14_return_type_deduction = empty_boost; #else namespace boost_no_cxx14_variable_templates = 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 @@ -1566,6 +1571,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX14_VARIABLE_TEMPLATES 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; diff --git a/test/no_cxx17_std_apply_fail.cpp b/test/no_cxx17_std_apply_fail.cpp new file mode 100644 index 00000000..e1c3d367 --- /dev/null +++ b/test/no_cxx17_std_apply_fail.cpp @@ -0,0 +1,37 @@ +// 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 +// 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_STD_APPLY +// This file should not compile, if it does then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#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_no_cxx17_std_apply::test(); +} + diff --git a/test/no_cxx17_std_apply_pass.cpp b/test/no_cxx17_std_apply_pass.cpp new file mode 100644 index 00000000..b3aa8744 --- /dev/null +++ b/test/no_cxx17_std_apply_pass.cpp @@ -0,0 +1,37 @@ +// 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 +// 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_STD_APPLY +// This file should compile, if it does not then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX17_STD_APPLY +#include "boost_no_cxx17_std_apply.ipp" +#else +namespace boost_no_cxx17_std_apply = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx17_std_apply::test(); +} + From 6f0c359a4e2e5fcfad4cf9af9524b53122fdb494 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sun, 11 Dec 2016 16:45:12 +0400 Subject: [PATCH 013/261] Disable C++14 constexpr for Intel compiler Intel compiler up to version 17.0 (on Linux) makes constexpr member functions implicitly const-qualified. --- include/boost/config/compiler/intel.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 80969e9e..fad1a5aa 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -496,6 +496,11 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_CXX11_HDR_TUPLE #endif +// Broken in all versions up to 17: +#if !defined(BOOST_NO_CXX14_CONSTEXPR) +#define BOOST_NO_CXX14_CONSTEXPR +#endif + #if (BOOST_INTEL_CXX_VERSION < 1200) // // fenv.h appears not to work with Intel prior to 12.0: From 13f5d9c88ae5363fe547f04c1d272b2a772a8b4d Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Mon, 12 Dec 2016 19:41:30 +0100 Subject: [PATCH 014/261] defect macro for C++14 feature `std::exchange()` --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 6 +++- include/boost/config/stdlib/dinkumware.hpp | 5 +++ include/boost/config/stdlib/libcomo.hpp | 3 ++ include/boost/config/stdlib/libcpp.hpp | 5 +++ include/boost/config/stdlib/libstdcpp3.hpp | 1 + include/boost/config/stdlib/modena.hpp | 3 ++ include/boost/config/stdlib/msl.hpp | 3 ++ include/boost/config/stdlib/roguewave.hpp | 3 ++ include/boost/config/stdlib/sgi.hpp | 3 ++ include/boost/config/stdlib/stlport.hpp | 3 ++ include/boost/config/stdlib/vacpp.hpp | 3 ++ test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx14_std_exchange.ipp | 23 ++++++++++++++ test/config_info.cpp | 2 ++ test/config_test.cpp | 12 ++++++- test/no_cxx14_std_exchange_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx14_std_exchange_pass.cpp | 37 ++++++++++++++++++++++ 18 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx14_std_exchange.ipp create mode 100644 test/no_cxx14_std_exchange_fail.cpp create mode 100644 test/no_cxx14_std_exchange_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index e39fa226..dcdcd7eb 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun Dec 11 12:22:05 2016 +# This file was automatically generated on Mon Dec 12 19:37:08 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -130,6 +130,7 @@ run-simple TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX : cxx14_hdr_shared_mutex run-simple TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES : cxx14_initialized_lambda_captures ; run-simple TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI : cxx14_aggregate_nsdmi ; run-simple TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION : cxx14_return_type_deduction ; +run-simple TEST_BOOST_NO_CXX14_STD_EXCHANGE : cxx14_std_exchange ; run-simple TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES : cxx14_variable_templates ; run-simple TEST_BOOST_NO_CXX17_STD_APPLY : cxx17_std_apply ; run-simple TEST_BOOST_NO_CXX17_STD_INVOKE : cxx17_std_invoke ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index caad5bbf..dbfaa653 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Dec 11 12:22:05 2016 +// This file was automatically generated on Mon Dec 12 19:37:08 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -453,6 +453,10 @@ namespace test = boost_no_cxx14_aggregate_nsdmi; # include "../test/boost_no_cxx14_return_type_ded.ipp" namespace test = boost_no_cxx14_return_type_deduction; #endif +#ifdef TEST_BOOST_NO_CXX14_STD_EXCHANGE +# include "../test/boost_no_cxx14_std_exchange.ipp" +namespace test = boost_no_cxx14_std_exchange; +#endif #ifdef TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES # include "../test/boost_no_cxx14_var_templ.ipp" namespace test = boost_no_cxx14_variable_templates; diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 6094bcc1..ad9e4f5d 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -157,6 +157,11 @@ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX #endif +// 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) # define BOOST_NO_CXX17_STD_APPLY diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index a7be537c..e3fc627f 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -72,6 +72,9 @@ # 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 diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index d5d2fd61..2eea9997 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -79,6 +79,11 @@ #define BOOST_NO_STD_MESSAGES #endif +// C++14 features +#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif + // C++17 features #if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_INVOKE diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 1cbebb87..6e40bad4 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -239,6 +239,7 @@ // Although is present and compilable against, the actual implementation is not functional // 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 +# define BOOST_NO_CXX14_STD_EXCHANGE #endif #if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7))) diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 27ca4531..fa4a8187 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -61,6 +61,9 @@ # 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 diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index c9e6b281..8f21a138 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -85,6 +85,9 @@ # 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 diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index 420fa26b..437d38d9 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -197,6 +197,9 @@ # 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 diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index a1ef7343..8d2f849f 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -155,6 +155,9 @@ # 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 diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 971b7813..518f9efd 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -245,6 +245,9 @@ 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 diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 9d93ae4e..f9afef63 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -61,6 +61,9 @@ # 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 diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index c7b9a4f3..57605714 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun Dec 11 12:22:04 2016 +# This file was automatically generated on Mon Dec 12 19:37:08 2016 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -355,6 +355,9 @@ 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 ] ; 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/config_info.cpp b/test/config_info.cpp index 0e67f71b..53251d28 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1073,6 +1073,7 @@ 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_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); @@ -1147,6 +1148,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 2e4c23e3..77f4511c 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Dec 11 12:22:04 2016 +// This file was automatically generated on Mon Dec 12 19:37:08 2016 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -312,6 +312,11 @@ 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 @@ -1566,6 +1571,11 @@ 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; diff --git a/test/no_cxx14_std_exchange_fail.cpp b/test/no_cxx14_std_exchange_fail.cpp new file mode 100644 index 00000000..c7100377 --- /dev/null +++ b/test/no_cxx14_std_exchange_fail.cpp @@ -0,0 +1,37 @@ +// 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 +// 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_STD_APPLY +// This file should not compile, if it does then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#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_no_cxx14_std_exchange::test(); +} + diff --git a/test/no_cxx14_std_exchange_pass.cpp b/test/no_cxx14_std_exchange_pass.cpp new file mode 100644 index 00000000..edac2fbf --- /dev/null +++ b/test/no_cxx14_std_exchange_pass.cpp @@ -0,0 +1,37 @@ +// 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 +// 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_STD_APPLY +// This file should compile, if it does not then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX14_STD_EXCHANGE +#include "boost_no_cxx14_std_exchange.ipp" +#else +namespace boost_no_cxx14_std_exchange = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx14_std_exchange::test(); +} + From 553dcbec9600fce92aa94ca27e4e9c5b0f94b434 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Dec 2016 10:21:26 +0000 Subject: [PATCH 015/261] MSVC has no std::apply. --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index ad9e4f5d..f08f44f0 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -163,8 +163,8 @@ #endif // C++17 features -#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) # define BOOST_NO_CXX17_STD_APPLY +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) # define BOOST_NO_CXX17_STD_INVOKE #endif From 25be5543ae395d16f23ed2ad80c6f9848eb9edef Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Dec 2016 10:35:00 +0000 Subject: [PATCH 016/261] libstdc++ has no std::exchange unless in C++14 mode. --- include/boost/config/stdlib/libstdcpp3.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 6e40bad4..557767b1 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -239,6 +239,8 @@ // Although is present and compilable against, the actual implementation is not functional // 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 From 2fd39f10cbf1d3fa32278df43418ce9f42f1e7d4 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Dec 2016 10:37:11 +0000 Subject: [PATCH 017/261] Intel appears not to support C++14 variable templates. --- include/boost/config/compiler/intel.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index fad1a5aa..1885ea28 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -35,6 +35,10 @@ #endif +#if (__INTEL_COMPILER <= 1600) && !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) +# define BOOST_NO_CXX14_VARIABLE_TEMPLATES +#endif + #else #include From 54f108a006b3218bfb49e2e6a5d8c673e449536f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Dec 2016 18:29:58 +0000 Subject: [PATCH 018/261] MSVC compatible compilers may have __has_include but still set __cplusplus to obsolete versions numbers for MSVC compatibility (ie Intel). --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index f08f44f0..8cf5d4dd 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -150,7 +150,7 @@ #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) From ded49a9d3229897731acf676c559693692416cb6 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Tue, 27 Dec 2016 20:38:05 +0400 Subject: [PATCH 019/261] Move BOOST_NO_CXX14_CONSTEXPR to the right section - Define BOOST_NO_CXX14_CONSTEXPR only for the gcc-compatible version of Intel compiler (other versions untested). The previous definition was not in the correct preprocessor branch and the macro was not defined when it should have been. - Increased the latest tested Intel compiler version to 17. - Added comments to the preprocessor directives to simplify navigation in the file. --- include/boost/config/compiler/intel.hpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 1885ea28..bf3f7d49 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -39,15 +39,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif -#else +#else // defined(_MSC_VER) #include #undef BOOST_GCC_VERSION #undef BOOST_GCC_CXX11 +// 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) @@ -92,7 +97,7 @@ # define BOOST_INTEL_LINUX BOOST_INTEL #endif -#else +#else // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__)) #include @@ -483,7 +488,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: @@ -500,11 +505,6 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_CXX11_HDR_TUPLE #endif -// Broken in all versions up to 17: -#if !defined(BOOST_NO_CXX14_CONSTEXPR) -#define BOOST_NO_CXX14_CONSTEXPR -#endif - #if (BOOST_INTEL_CXX_VERSION < 1200) // // fenv.h appears not to work with Intel prior to 12.0: @@ -535,10 +535,10 @@ 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 "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) From ab0fa3b3d72d67c4589bca554525057189cf08ae Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 27 Dec 2016 19:34:05 +0000 Subject: [PATCH 020/261] Fix to get config_test passing with /clr or /clr pure and msvc. See https://svn.boost.org/trac/boost/ticket/12713. Note that /clr safe is still not supported - so much doesn't work it's hard to call it a C++ compiler in that case. --- include/boost/config/compiler/visualc.hpp | 20 +++++++++++++++ include/boost/config/stdlib/dinkumware.hpp | 30 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index cdbc9b67..78c50e51 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -218,6 +218,26 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP +// +// 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 + // // prefix and suffix headers: // diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 8cf5d4dd..3b95dcf3 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -196,6 +196,36 @@ # 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 From b49f6583321a930b91649fc14a87fed46ca24bbc Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 27 Dec 2016 18:10:58 -0800 Subject: [PATCH 021/261] Update version.hpp to 1.64 --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 94c16c31..03b33f9a 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 106400 // // 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_64" #endif From de5f166253bd6d671ebdd3f5b7ce1c79471c0789 Mon Sep 17 00:00:00 2001 From: O01eg Date: Thu, 5 Jan 2017 21:18:31 +0300 Subject: [PATCH 022/261] Use corrent name for libraries built with MS VS 2017 RC. --- include/boost/config/auto_link.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 56a16b0b..d4f3eabf 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -161,10 +161,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) && (BOOST_MSVC < 1910) + + // vc14: +# define BOOST_LIB_TOOLSET "vc140" + # elif defined(BOOST_MSVC) - // vc14: -# define BOOST_LIB_TOOLSET "vc140" + // vc15: +# define BOOST_LIB_TOOLSET "vc150" # elif defined(__BORLANDC__) From e21b1729cb4fbc831ee15c09c1795735bf798045 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 17 Jan 2017 23:21:37 +0000 Subject: [PATCH 023/261] Fix name of the library --- include/boost/config/stdlib/libstdcpp3.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 557767b1..205489a9 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -101,8 +101,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 +110,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 @@ -222,7 +222,7 @@ // #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 #endif From c85095cf3307e902335fd34cfc55643e4737aad1 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Thu, 2 Feb 2017 13:46:39 -0500 Subject: [PATCH 024/261] Support BOOST_GCC guards in BOOST_WORKAROUND --- include/boost/detail/workaround.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 40b3423b..7727aaf1 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -85,6 +85,11 @@ #else #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 #endif +#ifndef BOOST_GCC +#define BOOST_GCC_WORKAROUND_GUARD 1 +#else +#define BOOST_GCC_WORKAROUND_GUARD 0 +#endif #ifndef __IBMCPP__ #define __IBMCPP___WORKAROUND_GUARD 1 #else From 6e93ac5d7267914503fea4611035e4773daa5c1f Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Fri, 3 Feb 2017 23:57:44 -0500 Subject: [PATCH 025/261] Add BOOST_NO_CXX11_SFINAE_EXPR --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 6 ++- doc/macro_reference.qbk | 3 ++ include/boost/config/compiler/borland.hpp | 1 + include/boost/config/compiler/codegear.hpp | 1 + include/boost/config/compiler/common_edg.hpp | 1 + include/boost/config/compiler/cray.hpp | 1 + include/boost/config/compiler/digitalmars.hpp | 1 + include/boost/config/compiler/gcc.hpp | 1 + include/boost/config/compiler/gcc_xml.hpp | 1 + include/boost/config/compiler/hp_acc.hpp | 1 + include/boost/config/compiler/intel.hpp | 5 ++ include/boost/config/compiler/metrowerks.hpp | 1 + include/boost/config/compiler/mpw.hpp | 1 + include/boost/config/compiler/pathscale.hpp | 1 + include/boost/config/compiler/pgi.hpp | 1 + include/boost/config/compiler/sunpro_cc.hpp | 1 + include/boost/config/compiler/vacpp.hpp | 1 + include/boost/config/compiler/visualc.hpp | 2 + test/all/Jamfile.v2 | 5 +- test/boost_no_cxx11_sfinae_expr.ipp | 48 +++++++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 ++++- test/no_cxx11_sfinae_expr_fail.cpp | 37 ++++++++++++++ test/no_cxx11_sfinae_expr_pass.cpp | 37 ++++++++++++++ 25 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx11_sfinae_expr.ipp create mode 100644 test/no_cxx11_sfinae_expr_fail.cpp create mode 100644 test/no_cxx11_sfinae_expr_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index dcdcd7eb..a96bfcd1 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Dec 12 19:37:08 2016 +# This file was automatically generated on Sat Feb 4 00:49:07 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -116,6 +116,7 @@ run-simple TEST_BOOST_NO_CXX11_INLINE_NAMESPACES : cxx11_inline_namespac run-simple TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS : cxx11_non_public_defaulted_functions ; run-simple TEST_BOOST_NO_CXX11_NUMERIC_LIMITS : cxx11_numeric_limits ; run-simple TEST_BOOST_NO_CXX11_REF_QUALIFIERS : cxx11_ref_qualifiers ; +run-simple TEST_BOOST_NO_CXX11_SFINAE_EXPR : cxx11_sfinae_expr ; run-simple TEST_BOOST_NO_CXX11_SMART_PTR : cxx11_smart_ptr ; run-simple TEST_BOOST_NO_CXX11_STD_ALIGN : cxx11_std_align ; run-simple TEST_BOOST_NO_CXX11_THREAD_LOCAL : cxx11_thread_local ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index dbfaa653..9dbb9638 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Dec 12 19:37:08 2016 +// 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 @@ -397,6 +397,10 @@ namespace test = boost_no_cxx11_numeric_limits; # include "../test/boost_no_cxx11_ref_qualifiers.ipp" namespace test = boost_no_cxx11_ref_qualifiers; #endif +#ifdef TEST_BOOST_NO_CXX11_SFINAE_EXPR +# include "../test/boost_no_cxx11_sfinae_expr.ipp" +namespace test = boost_no_cxx11_sfinae_expr; +#endif #ifdef TEST_BOOST_NO_CXX11_SMART_PTR # include "../test/boost_no_cxx11_smart_ptr.ipp" namespace test = boost_no_cxx11_smart_ptr; diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index b1d30e4a..4ff0999e 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -692,6 +692,9 @@ 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. +]] [[`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`. diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index ccd930ea..b749496e 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -185,6 +185,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 diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index e2f6061b..3c5262fe 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 diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index c09faeb0..eab93784 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 diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 837f8152..eab52877 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -39,6 +39,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 diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index c344aae0..e371a68e 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 diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index e319d049..c82cbc7e 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -253,6 +253,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 diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index b56c7862..63b08ac4 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 diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index a773b8c4..9df18eaf 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 bf3f7d49..f55189a0 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -415,6 +415,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: diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 3c5e2286..8d42563c 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 diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 084f9e15..1b8d39ea 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 diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index a5e65af4..016ad5a4 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -37,6 +37,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 diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index fa2d5e40..af700514 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -88,6 +88,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_SWPRINTF #define BOOST_NO_CXX11_TEMPLATE_ALIASES diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index ac259fce..cdd30b14 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) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 3fbed9fa..b75a1bd1 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -114,6 +114,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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 78c50e51..ef58626a 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -218,6 +218,8 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#define BOOST_NO_CXX11_SFINAE_EXPR + // // Things that don't work in clr mode: // diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 57605714..8916f75c 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Dec 12 19:37:08 2016 +# This file was automatically generated on Sat Feb 4 00:49:07 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -313,6 +313,9 @@ test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" : 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 ] ; diff --git a/test/boost_no_cxx11_sfinae_expr.ipp b/test/boost_no_cxx11_sfinae_expr.ipp new file mode 100644 index 00000000..8adfdea3 --- /dev/null +++ b/test/boost_no_cxx11_sfinae_expr.ipp @@ -0,0 +1,48 @@ +/* +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> { + static const int value = 1; +}; + +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/config_info.cpp b/test/config_info.cpp index 53251d28..f8184dc0 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1053,6 +1053,7 @@ void print_boost_macros() 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); @@ -1149,6 +1150,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 77f4511c..3a1af676 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Dec 12 19:37:08 2016 +// 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 @@ -242,6 +242,11 @@ namespace boost_no_cxx11_numeric_limits = empty_boost; #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 @@ -1501,6 +1506,11 @@ int main( int, char *[] ) 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; diff --git a/test/no_cxx11_sfinae_expr_fail.cpp b/test/no_cxx11_sfinae_expr_fail.cpp new file mode 100644 index 00000000..1613f16e --- /dev/null +++ b/test/no_cxx11_sfinae_expr_fail.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 not compile, if it does then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#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_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(); +} + From 2c34894d488535fb299462eb7d30e48d47015d7f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 5 Feb 2017 18:02:11 +0000 Subject: [PATCH 026/261] Merge branch 'restrict_support' of https://github.com/jfalcou/config into restrict_keyword # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- doc/macro_reference.qbk | 18 ++++++++++++++++++ include/boost/config/suffix.hpp | 21 ++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index b1d30e4a..d745bfa2 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -209,6 +209,9 @@ 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. @@ -1150,6 +1153,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. diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index eeaec2bf..13068e3d 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -583,6 +583,25 @@ 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) +# 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_FORCEINLINE ---------------------------------------------// // Macro to use in place of 'inline' to force a function to be inline #if !defined(BOOST_FORCEINLINE) @@ -604,7 +623,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 From 438520d1fdcab93b813a32e3b5d1fb406e3d28e9 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 5 Feb 2017 19:00:45 +0000 Subject: [PATCH 027/261] Cygwin appears not to have sigaction all the time after all. --- include/boost/config/platform/cygwin.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index b7ef572f..53e23f7f 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 @@ -51,7 +51,6 @@ #ifdef BOOST_HAS_NL_TYPES_H # undef BOOST_HAS_NL_TYPES_H #endif - From fb87ea1cbe0bb03d8bb55f050c7915b96bf872fb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 5 Feb 2017 19:01:24 +0000 Subject: [PATCH 028/261] Regenerate docs. --- .../boost_config/boost_macro_reference.html | 89 +++++++++++++++++++ doc/html/index.html | 4 +- 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 691a11c5..c4eda791 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -41,6 +41,8 @@ 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
Boost Helper Macros
Boost @@ -813,6 +815,24 @@ + +

+ BOOST_NO_RESTRICT_REFERENCES +

+ + +

+ Compiler +

+ + +

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

+ + +

BOOST_NO_RTTI @@ -3715,6 +3735,46 @@

+

+ The following macros describe features in the 2016 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_INVOKE +

+
+

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

+
+
+
+ @@ -4121,6 +4181,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 diff --git a/doc/html/index.html b/doc/html/index.html index 5ff77786..5c633285 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -72,6 +72,8 @@ 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
Boost Helper Macros
Boost @@ -988,7 +990,7 @@ - +

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

Last revised: February 05, 2017 at 19:01:00 GMT


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

+ BOOST_NO_CXX14_STD_EXCHANGE +

+ + +

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

+ + +

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

- + + + +

+ BOOST_NO_CXX17_STD_APPLY +

+ + +

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

+ + +

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

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

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

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


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

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

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

- + + + +
+

+ BOOST_NO_CXX98_RANDOM_SHUFFLE +

+
+

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

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

+ + + +
+ +

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

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

+ Macro +

+
+

+ Description +

+

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

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

+

+ BOOST_NO_AUTO_PTR +

+
+

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

+
+

+ BOOST_NO_CXX98_FUNCTION_BASE +

+
+

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

+
+

+ BOOST_NO_CXX98_BINDERS +

+
+

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

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

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

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


From 912ebda1ca85fecc6bc6ca4a08319764460fb817 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 23 Apr 2017 22:11:56 -0500 Subject: [PATCH 067/261] Bump to 1.65.0. --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 03b33f9a..725165f4 100644 --- a/include/boost/version.hpp +++ b/include/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 106400 +#define BOOST_VERSION 106500 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_64" +#define BOOST_LIB_VERSION "1_65" #endif From cb2216eaff687f94e6d20687cbc817236b9df7f8 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 23 Apr 2017 22:11:56 -0500 Subject: [PATCH 068/261] Bump to 1.65.0. --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 03b33f9a..725165f4 100644 --- a/include/boost/version.hpp +++ b/include/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 106400 +#define BOOST_VERSION 106500 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_64" +#define BOOST_LIB_VERSION "1_65" #endif From 19766b0a0e3d8c92e4c0d058cc47190ce7ea1528 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 26 Apr 2017 19:43:11 +0100 Subject: [PATCH 069/261] Older Oracle Solaris compiles have no ::intptr_t. Defer to whether INTPTR_MAX is defined or not on sun whenever is available. --- include/boost/cstdint.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index e5507a5f..31b67417 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -374,7 +374,7 @@ namespace boost || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ || defined(__CYGWIN__) \ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun) || defined(INTPTR_MAX) + || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || (defined(sun) && !defined(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX) namespace boost { using ::intptr_t; From 0b508cb2c9c901c18629e689de7ae8b8658ce3e2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 Apr 2017 17:22:18 +0000 Subject: [PATCH 070/261] noreturn attribute is apparently not supported by Oracle 12.4 --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index dda34259..6abec22f 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -643,7 +643,7 @@ namespace std{ using ::type_info; } # define BOOST_NORETURN __declspec(noreturn) # elif defined(__GNUC__) # define BOOST_NORETURN __attribute__ ((__noreturn__)) -# elif defined(__has_attribute) && defined(__SUNPRO_CC) +# elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) # if __has_attribute(noreturn) # define BOOST_NORETURN [[noreturn]] # endif From 8c102bcaa7c5ea5822424817fbc4a8cef98056c7 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 16 May 2017 13:10:36 +0100 Subject: [PATCH 071/261] Add initial travis CI file. --- .travis.yml | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..4bd1d334 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,327 @@ +# Copyright 2016, 2017 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 + +python: "2.7" + +os: + - linux + - osx + +branches: + only: + - master + - develop + +env: + matrix: + - BOGUS_JOB=true + +matrix: + + exclude: + - env: BOGUS_JOB=true + + include: + - os: linux + env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.9 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.9 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + + - os: linux + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.5 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.5 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++11 + 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=c++03 + addons: + apt: + packages: + - clang-3.6 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.6 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11 + 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=c++03 + addons: + apt: + packages: + - clang-3.7 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11 + 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=c++03 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++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=c++03 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++14 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++1z + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + +install: + - cd .. + - git clone -b $TRAVIS_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/config + - git submodule update --init tools/boostdep + - cp -r $TRAVIS_BUILD_DIR/* libs/config + - python tools/boostdep/depinst/depinst.py config + - ./bootstrap.sh + - ./b2 headers + +script: + - |- + echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam + - ./b2 libs/config/test toolset=$TOOLSET + +notifications: + email: + on_success: always From 118c432e746725cf031eae5549fd6f8a8e445855 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 18 May 2017 19:39:25 +0100 Subject: [PATCH 072/261] Add initial travis.yml file. --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4bd1d334..2fa39176 100644 --- a/.travis.yml +++ b/.travis.yml @@ -311,9 +311,7 @@ install: - cd boost-root - git submodule update --init tools/build - git submodule update --init libs/config - - git submodule update --init tools/boostdep - cp -r $TRAVIS_BUILD_DIR/* libs/config - - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers From bc966c41ad4fdc7560517f72f6bbac869d54ce9e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 18 May 2017 19:43:19 +0100 Subject: [PATCH 073/261] Fix missing dependencies in travis build. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2fa39176..4bd1d334 100644 --- a/.travis.yml +++ b/.travis.yml @@ -311,7 +311,9 @@ install: - cd boost-root - git submodule update --init tools/build - git submodule update --init libs/config + - git submodule update --init tools/boostdep - cp -r $TRAVIS_BUILD_DIR/* libs/config + - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers From 7398ea79552752800dcfa575d047937a2918188f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:18:17 +0100 Subject: [PATCH 074/261] Add diagnostic information to travis build. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 4bd1d334..73e2fdf9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,6 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers + - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/config_info.cpp -o config_info && ./config_info script: - |- From 2a15c53fbb36298d45ed579473a9335b6bc9be7e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:26:21 +0100 Subject: [PATCH 075/261] Correct path to config_info.cpp in travis file. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 73e2fdf9..49785345 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,7 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/config_info.cpp -o config_info && ./config_info + - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info script: - |- From fd5d37f6df784dc01b0dd112e8271b8ab29842cb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:37:45 +0100 Subject: [PATCH 076/261] Another attempt to fix travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 49785345..0d5d2fd5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,7 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info + - $COMPILER -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info script: - |- From 6d7592091cadca10edd6a8fa61c35f59bd4451e5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 May 2017 13:38:02 +0100 Subject: [PATCH 077/261] When using clang + libstdC++ not all C++11 features are necessarily available --- include/boost/config/stdlib/libstdcpp3.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 14dca142..91ecccba 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -148,6 +148,19 @@ // 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 // // GCC 4.8 and 9 add working versions of and respectively. From 15a0c119a13938bd00b99273e6fb876ff019c688 Mon Sep 17 00:00:00 2001 From: Daniela Engert Date: Fri, 19 May 2017 15:02:41 +0200 Subject: [PATCH 078/261] The library implementations in MSVC 14.0 and 14.1 have both version number V6.50:0009, and therefore _CPPLIB_VER defined to 650. But the library in 14.0 does *not* have std::apply whereas the one in 14.1 *does*. Signed-off-by: Daniela Engert --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 86fa7fe6..ba1d9b0b 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -163,7 +163,7 @@ #endif // C++17 features -#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) +#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 #endif #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) From 40f4e6ed2f3310acf1f13b26945b22dfdcfda6c4 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 18:11:29 +0100 Subject: [PATCH 079/261] Disable for older clang versions. --- include/boost/config/stdlib/libstdcpp3.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 91ecccba..152435fc 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -161,6 +161,15 @@ extern "C" char *gets (char *__s); #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.4 and gcc-4.6: +// +#if (__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 5)) +# if BOOST_LIBSTDCXX_VERSION < 50000 +# define BOOST_NO_CXX11_HDR_CHRONO +# endif +#endif // // GCC 4.8 and 9 add working versions of and respectively. From 32318e41aaeb4cb2548a83cd259fa4651ae6f44c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 18:11:56 +0100 Subject: [PATCH 080/261] Add clang detection macros to config_info.cpp. --- test/config_info.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 7f401181..46412cf1 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -313,6 +313,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); From 219c351cb495aed4a993234d0d51da9927736f1e Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Wed, 17 May 2017 01:07:18 -0400 Subject: [PATCH 081/261] Add BOOST_NO_CXX11_POINTER_TRAITS --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- doc/macro_reference.qbk | 2 ++ include/boost/config/stdlib/dinkumware.hpp | 7 ++++ include/boost/config/stdlib/libcomo.hpp | 1 + include/boost/config/stdlib/libcpp.hpp | 2 ++ include/boost/config/stdlib/libstdcpp3.hpp | 1 + include/boost/config/stdlib/modena.hpp | 1 + include/boost/config/stdlib/msl.hpp | 1 + include/boost/config/stdlib/roguewave.hpp | 1 + include/boost/config/stdlib/sgi.hpp | 1 + include/boost/config/stdlib/stlport.hpp | 1 + include/boost/config/stdlib/vacpp.hpp | 1 + include/boost/config/stdlib/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx11_pointer_traits.ipp | 37 ++++++++++++++++++++++ test/config_info.cpp | 2 ++ test/config_test.cpp | 12 ++++++- test/no_cxx11_pointer_traits_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx11_pointer_traits_pass.cpp | 37 ++++++++++++++++++++++ 20 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx11_pointer_traits.ipp create mode 100644 test/no_cxx11_pointer_traits_fail.cpp create mode 100644 test/no_cxx11_pointer_traits_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index adcd0c02..a6842bfc 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Apr 17 18:35:54 2017 +# This file was automatically generated on Wed May 17 01:29:40 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -107,6 +107,7 @@ obj cxx11_hdr_unordered_set : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_UN 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 6689d1d7..c44e06d3 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 18:35:54 2017 +// This file was automatically generated on Wed May 17 01:29:40 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -491,6 +491,11 @@ # 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 # ifdef BOOST_NO_CXX11_REF_QUALIFIERS # error "Defect macro BOOST_NO_CXX11_REF_QUALIFIERS is defined." diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 6e981225..a0d51e89 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -680,6 +680,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. ]] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 86fa7fe6..1689f0b0 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -147,6 +147,13 @@ # 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 diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index e3fc627f..ce83f082 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 diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 2eea9997..b3a2fd01 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -29,6 +29,7 @@ // 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 @@ -53,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 diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 14dca142..baa93172 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -231,6 +231,7 @@ extern "C" char *gets (char *__s); // 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 // diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index fa4a8187..98bdc3fb 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 diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 96c1b0d5..9606a9ae 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -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 diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index 437d38d9..380d0ff3 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 diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 8d2f849f..5016ff62 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 diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 518f9efd..81e6ccf0 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 diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index f9afef63..c159af25 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 diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp index 35cca6e9..dce40f50 100644 --- a/include/boost/config/stdlib/xlcpp_zos.hpp +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -31,6 +31,7 @@ #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 diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index f99040be..db1f5a1c 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Apr 17 18:35:54 2017 +# This file was automatically generated on Wed May 17 01:29:40 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -310,6 +310,9 @@ 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 ] ; diff --git a/test/boost_no_cxx11_pointer_traits.ipp b/test/boost_no_cxx11_pointer_traits.ipp new file mode 100644 index 00000000..d7223f32 --- /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/config_info.cpp b/test/config_info.cpp index 7f401181..b467d5ab 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1048,6 +1048,7 @@ 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); @@ -1163,6 +1164,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index d94a438d..176902d1 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 18:35:54 2017 +// This file was automatically generated on Wed May 17 01:29:40 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -237,6 +237,11 @@ 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 @@ -1521,6 +1526,11 @@ 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; 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(); +} + From cd396b619a781bc20f8b5c691076cc669344ef02 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 May 2017 19:18:40 +0100 Subject: [PATCH 082/261] Clang 3.x can't parse from gcc-4.6 and earlier. --- include/boost/config/stdlib/libstdcpp3.hpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 152435fc..5299c98c 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -163,10 +163,13 @@ extern "C" char *gets (char *__s); #endif // // Early clang versions can handle , not exactly sure which versions -// but certainly up to clang-3.4 and gcc-4.6: +// but certainly up to clang-3.8 and gcc-4.6: // -#if (__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 5)) -# if BOOST_LIBSTDCXX_VERSION < 50000 +#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 From 0df7552f38cc059defa4189d7a36101925559eb8 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Fri, 19 May 2017 12:22:13 -0600 Subject: [PATCH 083/261] define BOOST_NO_AUTO_PTR when building with libc++ and C++17 New libc++ versions remove `std::auto_ptr` when building as C++17, unless the magic tag `_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR` is defined. Tell the rest of Boost that there's no `auto_ptr` in that case. --- include/boost/config/stdlib/libcpp.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 2eea9997..e6b494c1 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -91,6 +91,9 @@ #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 <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) // This is a bit of a sledgehammer, because really it's just libc++abi that has no From eec62a11626f9125d9778194ca6353a0c21908f6 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Fri, 19 May 2017 12:38:14 -0600 Subject: [PATCH 084/261] Update boost_has_nl_types_h.ipp clang 5 complains that comparing a `nl_catd` to an integer is not allowed. ./boost_has_nl_types_h.ipp:20:11: error: ordered comparison between pointer and zero ('nl_catd' (aka '__nl_cat_d *') and 'int') if(cat >= 0) catclose(cat); --- test/boost_has_nl_types_h.ipp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/boost_has_nl_types_h.ipp b/test/boost_has_nl_types_h.ipp index 9126adbf..e23f0a21 100644 --- a/test/boost_has_nl_types_h.ipp +++ b/test/boost_has_nl_types_h.ipp @@ -17,7 +17,7 @@ namespace boost_has_nl_types_h{ int test() { nl_catd cat = catopen("foo", 0); - if(cat >= 0) catclose(cat); + if(cat != (nl_catd)-1) catclose(cat); return 0; } From 4a02ac84e2f3f6cafa25e428fbe3863fdc47fffd Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 20 May 2017 10:53:25 +0100 Subject: [PATCH 085/261] More travis improvements: Output config_info built from b2. Add more XCode versions to the test matrix. --- .travis.yml | 117 ++++++++++++++++++++++++++++++++++++++++++++++-- test/Jamfile.v2 | 4 ++ 2 files changed, 118 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0d5d2fd5..de8c0181 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,6 +147,33 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++11 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++14 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++1z + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 @@ -295,15 +322,99 @@ matrix: - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode6.4 install: - cd .. @@ -316,12 +427,12 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $COMPILER -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info - + script: - |- echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - - ./b2 libs/config/test toolset=$TOOLSET + - (cd libs/config/test && ../../../b2 config_info_travis_install msvc && ./config_info_travis) + - ./b2 -j3 libs/config/test toolset=$TOOLSET notifications: email: diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2f6a122a..aa8383c6 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -104,3 +104,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 ; From ee93e3802223229cf6a1d419d52a4f67685ea354 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 20 May 2017 17:59:33 +0100 Subject: [PATCH 086/261] More travis fixes: Fix compiler name in config_info output generation. Remove g++7 tests: apparently it's not supported yet. --- .travis.yml | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index de8c0181..11e03535 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,33 +147,6 @@ matrix: sources: - ubuntu-toolchain-r-test - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++11 - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++14 - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++1z - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 @@ -431,7 +404,7 @@ install: script: - |- echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - - (cd libs/config/test && ../../../b2 config_info_travis_install msvc && ./config_info_travis) + - (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET && ./config_info_travis) - ./b2 -j3 libs/config/test toolset=$TOOLSET notifications: From 493e3ba9de5d8405ebe1a255963fd85700dcbe27 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 21 May 2017 09:33:14 +0100 Subject: [PATCH 087/261] We should have at least one set of tests that enable GNU extensions. --- .travis.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.travis.yml b/.travis.yml index 11e03535..80947ceb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,6 +147,42 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++03 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++11 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++14 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++1z + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 From 63b39e275846896083ab11721b5aae5c806bdcbc Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 21 May 2017 11:41:04 +0100 Subject: [PATCH 088/261] Enhance thread_local tests. Try to reproduce issues: https://github.com/libbitcoin/libbitcoin/issues/733#issuecomment-301652210 https://github.com/boostorg/multiprecision/issues/20 --- test/boost_no_cxx11_thread_local.ipp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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; } } From 15fb8c47f8599a3e150aa1de04d4940e84ed4fcd Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:04:55 +0100 Subject: [PATCH 089/261] Add first tentative appveyor.yml file. --- appveyor.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..4e9d807b --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,43 @@ +# 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: + - x86 + - x64 + +matrix: + - TOOLSET: msvc-9.0 + - TOOLSET: msvc-10.0 + - TOOLSET: msvc-11.0 + - TOOLSET: msvc-12.0 + - TOOLSET: msvc-14.0 + +install: + - cd .. + - git clone -b %APPVEYOR_REPO_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/config + - git submodule update --init tools/boostdep + - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config + - python tools/boostdep/depinst/depinst.py config + - bootstrap + - b2 headers + +build: off + +test_script: + - cd libs/config/test + - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% + - config_info.exe + - ..\..\..\b2 -j3 toolset=%TOOLSET% From da36b699fcf015bccc742619396eb47e7777e0a2 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:06:54 +0100 Subject: [PATCH 090/261] Try again with appveyor.yml --- appveyor.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4e9d807b..8365a53a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,12 +15,13 @@ platform: - x86 - x64 -matrix: - - TOOLSET: msvc-9.0 - - TOOLSET: msvc-10.0 - - TOOLSET: msvc-11.0 - - TOOLSET: msvc-12.0 - - TOOLSET: msvc-14.0 +environment: + matrix: + - TOOLSET: msvc-9.0 + - TOOLSET: msvc-10.0 + - TOOLSET: msvc-11.0 + - TOOLSET: msvc-12.0 + - TOOLSET: msvc-14.0 install: - cd .. From 3651139cc156fa687d19da2c3e07d08eb426380e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:16:06 +0100 Subject: [PATCH 091/261] Simplify appveyor.yml directory usage. --- appveyor.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 8365a53a..4d4e0751 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,12 +25,10 @@ environment: install: - cd .. - - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - - cd boost-root + - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git . - git submodule update --init tools/build - git submodule update --init libs/config - git submodule update --init tools/boostdep - - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config - python tools/boostdep/depinst/depinst.py config - bootstrap - b2 headers From c6d2300f07c3c2d4e88055f448a64acd0339f3f0 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:18:12 +0100 Subject: [PATCH 092/261] appveyor.yml: try again with simplified directory structure. --- appveyor.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4d4e0751..6e9287d8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,7 +25,8 @@ environment: install: - cd .. - - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git . + - git clone -b %APPVEYOR_REPO_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/config - git submodule update --init tools/boostdep @@ -36,7 +37,7 @@ install: build: off test_script: - - cd libs/config/test + - cd boost-root\libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From 2e38c1cded9c601a7270c63c7d052f159cc33e85 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:36:36 +0100 Subject: [PATCH 093/261] appveyor.yml: still can't get the directories quite right - try again with some debugging. --- appveyor.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 6e9287d8..a689a865 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,11 +33,14 @@ install: - python tools/boostdep/depinst/depinst.py config - bootstrap - b2 headers + - dir build: off test_script: - - cd boost-root\libs\config\test + - dir + - dir %APPVEYOR_BUILD_FOLDER% + - cd %APPVEYOR_BUILD_FOLDER%\libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From 1f83bcb56a5f4f7ad2c287f6e10cef73b6d20031 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:52:30 +0100 Subject: [PATCH 094/261] appveyor.yml: correct directories now that we can see where they are. --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a689a865..514f4389 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -39,8 +39,7 @@ build: off test_script: - dir - - dir %APPVEYOR_BUILD_FOLDER% - - cd %APPVEYOR_BUILD_FOLDER%\libs\config\test + - cd libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From d0d8da882360ef687c71333e2be573bd8c761945 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 24 May 2017 08:32:19 +0100 Subject: [PATCH 095/261] appveyor.yml: Fix config_info name. --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 514f4389..39438fc1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,5 +41,6 @@ test_script: - dir - cd libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - - config_info.exe + - dir + - config_info_travis - ..\..\..\b2 -j3 toolset=%TOOLSET% From e41b4e22acea193aa18d0626c3fe9c93bc9eee63 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 24 May 2017 18:02:43 +0100 Subject: [PATCH 096/261] Jamfile needs to import testing module. --- test/Jamfile.v2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index aa8383c6..29d52e4d 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 From 4af206ea53eba7fe2ab4fd3904cd3009d2e28452 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 25 May 2017 08:47:08 +0100 Subject: [PATCH 097/261] Appveyor: try enabling msvc-14.1, and add address-model to matrix. --- appveyor.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 39438fc1..a7ae0faf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,16 +12,22 @@ branches: - develop platform: - - x86 - x64 environment: matrix: - - TOOLSET: msvc-9.0 - - TOOLSET: msvc-10.0 - - TOOLSET: msvc-11.0 - - TOOLSET: msvc-12.0 - - TOOLSET: msvc-14.0 + - 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-14.1 address-model=32 + - ARGS: --toolset=msvc-9.0 address-model=64 + - ARGS: --toolset=msvc-10.0 address-model=64 + - ARGS: --toolset=msvc-11.0 address-model=64 + - ARGS: --toolset=msvc-12.0 address-model=64 + - ARGS: --toolset=msvc-14.0 address-model=64 + - ARGS: --toolset=msvc-14.1 address-model=64 install: - cd .. @@ -40,7 +46,7 @@ build: off test_script: - dir - cd libs\config\test - - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% + - ..\..\..\b2 config_info_travis_install %ARGS% - dir - config_info_travis - - ..\..\..\b2 -j3 toolset=%TOOLSET% + - ..\..\..\b2 -j3 %ARGS% From 9f39b329fb2f178f38b7598ca2bf25e796815a75 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 25 May 2017 12:25:40 +0100 Subject: [PATCH 098/261] Appveyor: remove test matrix entities that can not currently be built. --- appveyor.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a7ae0faf..d953963b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,13 +21,8 @@ environment: - 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-14.1 address-model=32 - - ARGS: --toolset=msvc-9.0 address-model=64 - - ARGS: --toolset=msvc-10.0 address-model=64 - - ARGS: --toolset=msvc-11.0 address-model=64 - ARGS: --toolset=msvc-12.0 address-model=64 - ARGS: --toolset=msvc-14.0 address-model=64 - - ARGS: --toolset=msvc-14.1 address-model=64 install: - cd .. From 07312935fdcf9b810ba2154b0b5f1b174767ce5a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 25 May 2017 19:56:41 +0100 Subject: [PATCH 099/261] Travis: remove redundent git clone --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 80947ceb..0a4f55d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -430,7 +430,6 @@ install: - git clone -b $TRAVIS_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/config - git submodule update --init tools/boostdep - cp -r $TRAVIS_BUILD_DIR/* libs/config - python tools/boostdep/depinst/depinst.py config From 18c69e9f4018f1dfa4a371cf6e3bdfcf8b406f1e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 26 May 2017 08:45:21 +0100 Subject: [PATCH 100/261] Appveyor: we need to copy the latest Git commit, not check out the super-project which may be out of date! --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index d953963b..6b242cf5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -28,8 +28,8 @@ 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/config - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py config - bootstrap From 076c86864c5a1654a05fc5b114e4dd0201deb319 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 27 May 2017 09:57:41 +0100 Subject: [PATCH 101/261] CI: streamline dependencies. Add GCC testers to Appveyor. --- .travis.yml | 6 ++++-- appveyor.yml | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0a4f55d0..8619b2a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -430,9 +430,11 @@ install: - git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - git submodule update --init tools/build - - git submodule update --init tools/boostdep + - 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 - - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers diff --git a/appveyor.yml b/appveyor.yml index d953963b..5023f41b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -23,15 +23,25 @@ environment: - 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=gcc address-model=64 + PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% + - ARGS: --toolset=gcc address-model=64 cxxflags=-std=gnu++1z + PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% + - ARGS: --toolset=gcc address-model=32 + PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;%PATH% + - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition + PATH: C:\MinGW\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/config - - git submodule update --init tools/boostdep - - python tools/boostdep/depinst/depinst.py config + - 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 - dir From 373710b7cef8cf7b69ad6e9912fc194a01b278b0 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 May 2017 10:11:59 +0100 Subject: [PATCH 102/261] Begin to remove all references to TR1. --- checks/Jamfile.v2 | 21 +--- checks/test_case.cpp | 87 +------------- test/all/Jamfile.v2 | 53 +-------- test/boost_has_tr1_array.ipp | 23 ---- test/boost_has_tr1_bind.ipp | 23 ---- test/boost_has_tr1_complex_over.ipp | 24 ---- test/boost_has_tr1_complex_trig.ipp | 30 ----- test/boost_has_tr1_function.ipp | 23 ---- test/boost_has_tr1_hash.ipp | 23 ---- test/boost_has_tr1_mem_fn.ipp | 23 ---- test/boost_has_tr1_random.ipp | 23 ---- test/boost_has_tr1_ref_wrap.ipp | 24 ---- test/boost_has_tr1_regex.ipp | 24 ---- test/boost_has_tr1_result_of.ipp | 24 ---- test/boost_has_tr1_shared_ptr.ipp | 24 ---- test/boost_has_tr1_tuple.ipp | 23 ---- test/boost_has_tr1_type_traits.ipp | 23 ---- test/boost_has_tr1_unordered_map.ipp | 24 ---- test/boost_has_tr1_unordered_set.ipp | 24 ---- test/boost_has_tr1_utility.ipp | 25 ---- test/config_info.cpp | 18 +-- test/config_test.cpp | 172 +-------------------------- test/has_tr1_array_fail.cpp | 38 ------ test/has_tr1_array_pass.cpp | 38 ------ test/has_tr1_bind_fail.cpp | 38 ------ test/has_tr1_bind_pass.cpp | 38 ------ test/has_tr1_complex_over_fail.cpp | 38 ------ test/has_tr1_complex_over_pass.cpp | 38 ------ test/has_tr1_complex_trig_fail.cpp | 38 ------ test/has_tr1_complex_trig_pass.cpp | 38 ------ test/has_tr1_function_fail.cpp | 38 ------ test/has_tr1_function_pass.cpp | 38 ------ test/has_tr1_hash_fail.cpp | 38 ------ test/has_tr1_hash_pass.cpp | 38 ------ test/has_tr1_mem_fn_fail.cpp | 38 ------ test/has_tr1_mem_fn_pass.cpp | 38 ------ test/has_tr1_random_fail.cpp | 38 ------ test/has_tr1_random_pass.cpp | 38 ------ test/has_tr1_ref_wrap_fail.cpp | 38 ------ test/has_tr1_ref_wrap_pass.cpp | 38 ------ test/has_tr1_regex_fail.cpp | 38 ------ test/has_tr1_regex_pass.cpp | 38 ------ test/has_tr1_result_of_fail.cpp | 38 ------ test/has_tr1_result_of_pass.cpp | 38 ------ test/has_tr1_shared_ptr_fail.cpp | 38 ------ test/has_tr1_shared_ptr_pass.cpp | 38 ------ test/has_tr1_tuple_fail.cpp | 38 ------ test/has_tr1_tuple_pass.cpp | 38 ------ test/has_tr1_type_traits_fail.cpp | 38 ------ test/has_tr1_type_traits_pass.cpp | 38 ------ test/has_tr1_unordered_map_fail.cpp | 38 ------ test/has_tr1_unordered_map_pass.cpp | 38 ------ test/has_tr1_unordered_set_fail.cpp | 38 ------ test/has_tr1_unordered_set_pass.cpp | 38 ------ test/has_tr1_utility_fail.cpp | 38 ------ test/has_tr1_utility_pass.cpp | 38 ------ tools/generate.cpp | 3 - 57 files changed, 6 insertions(+), 2047 deletions(-) delete mode 100644 test/boost_has_tr1_array.ipp delete mode 100644 test/boost_has_tr1_bind.ipp delete mode 100644 test/boost_has_tr1_complex_over.ipp delete mode 100644 test/boost_has_tr1_complex_trig.ipp delete mode 100644 test/boost_has_tr1_function.ipp delete mode 100644 test/boost_has_tr1_hash.ipp delete mode 100644 test/boost_has_tr1_mem_fn.ipp delete mode 100644 test/boost_has_tr1_random.ipp delete mode 100644 test/boost_has_tr1_ref_wrap.ipp delete mode 100644 test/boost_has_tr1_regex.ipp delete mode 100644 test/boost_has_tr1_result_of.ipp delete mode 100644 test/boost_has_tr1_shared_ptr.ipp delete mode 100644 test/boost_has_tr1_tuple.ipp delete mode 100644 test/boost_has_tr1_type_traits.ipp delete mode 100644 test/boost_has_tr1_unordered_map.ipp delete mode 100644 test/boost_has_tr1_unordered_set.ipp delete mode 100644 test/boost_has_tr1_utility.ipp delete mode 100644 test/has_tr1_array_fail.cpp delete mode 100644 test/has_tr1_array_pass.cpp delete mode 100644 test/has_tr1_bind_fail.cpp delete mode 100644 test/has_tr1_bind_pass.cpp delete mode 100644 test/has_tr1_complex_over_fail.cpp delete mode 100644 test/has_tr1_complex_over_pass.cpp delete mode 100644 test/has_tr1_complex_trig_fail.cpp delete mode 100644 test/has_tr1_complex_trig_pass.cpp delete mode 100644 test/has_tr1_function_fail.cpp delete mode 100644 test/has_tr1_function_pass.cpp delete mode 100644 test/has_tr1_hash_fail.cpp delete mode 100644 test/has_tr1_hash_pass.cpp delete mode 100644 test/has_tr1_mem_fn_fail.cpp delete mode 100644 test/has_tr1_mem_fn_pass.cpp delete mode 100644 test/has_tr1_random_fail.cpp delete mode 100644 test/has_tr1_random_pass.cpp delete mode 100644 test/has_tr1_ref_wrap_fail.cpp delete mode 100644 test/has_tr1_ref_wrap_pass.cpp delete mode 100644 test/has_tr1_regex_fail.cpp delete mode 100644 test/has_tr1_regex_pass.cpp delete mode 100644 test/has_tr1_result_of_fail.cpp delete mode 100644 test/has_tr1_result_of_pass.cpp delete mode 100644 test/has_tr1_shared_ptr_fail.cpp delete mode 100644 test/has_tr1_shared_ptr_pass.cpp delete mode 100644 test/has_tr1_tuple_fail.cpp delete mode 100644 test/has_tr1_tuple_pass.cpp delete mode 100644 test/has_tr1_type_traits_fail.cpp delete mode 100644 test/has_tr1_type_traits_pass.cpp delete mode 100644 test/has_tr1_unordered_map_fail.cpp delete mode 100644 test/has_tr1_unordered_map_pass.cpp delete mode 100644 test/has_tr1_unordered_set_fail.cpp delete mode 100644 test/has_tr1_unordered_set_pass.cpp delete mode 100644 test/has_tr1_utility_fail.cpp delete mode 100644 test/has_tr1_utility_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 5f35648a..961501c3 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 Wed May 17 01:29:40 2017 +# This file was automatically generated on Sun May 28 10:05:49 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -9,7 +9,7 @@ import modules ; import path ; -import testing ; + obj two_arg_use_facet : test_case.cpp : TEST_BOOST_HAS_TWO_ARG_USE_FACET ; obj bethreads : test_case.cpp : TEST_BOOST_HAS_BETHREADS ; @@ -42,23 +42,6 @@ obj slist : test_case.cpp : TEST_BOOST_HAS_SLIST ; obj static_assert : test_case.cpp : TEST_BOOST_HAS_STATIC_ASSERT ; obj stdint_h : test_case.cpp : TEST_BOOST_HAS_STDINT_H ; obj stlp_use_facet : test_case.cpp : TEST_BOOST_HAS_STLP_USE_FACET ; -obj tr1_array : test_case.cpp : TEST_BOOST_HAS_TR1_ARRAY ; -obj tr1_bind : test_case.cpp : TEST_BOOST_HAS_TR1_BIND ; -obj tr1_complex_overloads : test_case.cpp : TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS ; -obj tr1_complex_inverse_trig : test_case.cpp : TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG ; -obj tr1_function : test_case.cpp : TEST_BOOST_HAS_TR1_FUNCTION ; -obj tr1_hash : test_case.cpp : TEST_BOOST_HAS_TR1_HASH ; -obj tr1_mem_fn : test_case.cpp : TEST_BOOST_HAS_TR1_MEM_FN ; -obj tr1_random : test_case.cpp : TEST_BOOST_HAS_TR1_RANDOM ; -obj tr1_reference_wrapper : test_case.cpp : TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER ; -obj tr1_regex : test_case.cpp : TEST_BOOST_HAS_TR1_REGEX ; -obj tr1_result_of : test_case.cpp : TEST_BOOST_HAS_TR1_RESULT_OF ; -obj tr1_shared_ptr : test_case.cpp : TEST_BOOST_HAS_TR1_SHARED_PTR ; -obj tr1_tuple : test_case.cpp : TEST_BOOST_HAS_TR1_TUPLE ; -obj tr1_type_traits : test_case.cpp : TEST_BOOST_HAS_TR1_TYPE_TRAITS ; -obj tr1_unordered_map : test_case.cpp : TEST_BOOST_HAS_TR1_UNORDERED_MAP ; -obj tr1_unordered_set : test_case.cpp : TEST_BOOST_HAS_TR1_UNORDERED_SET ; -obj tr1_utility : test_case.cpp : TEST_BOOST_HAS_TR1_UTILITY ; obj unistd_h : test_case.cpp : TEST_BOOST_HAS_UNISTD_H ; obj variadic_tmpl : test_case.cpp : TEST_BOOST_HAS_VARIADIC_TMPL ; obj boost_msvc6_member_templates : test_case.cpp : TEST_BOOST_MSVC6_MEMBER_TEMPLATES ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index c44e06d3..76a12223 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed May 17 01:29:40 2017 +// This file was automatically generated on Sun May 28 10:05:49 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -166,91 +166,6 @@ # error "Feature macro BOOST_HAS_STLP_USE_FACET is not defined." # endif #endif -#ifdef TEST_BOOST_HAS_TR1_ARRAY -# ifndef BOOST_HAS_TR1_ARRAY -# error "Feature macro BOOST_HAS_TR1_ARRAY is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_BIND -# ifndef BOOST_HAS_TR1_BIND -# error "Feature macro BOOST_HAS_TR1_BIND is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_COMPLEX_OVERLOADS -# ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS -# error "Feature macro BOOST_HAS_TR1_COMPLEX_OVERLOADS is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -# ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -# error "Feature macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_FUNCTION -# ifndef BOOST_HAS_TR1_FUNCTION -# error "Feature macro BOOST_HAS_TR1_FUNCTION is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_HASH -# ifndef BOOST_HAS_TR1_HASH -# error "Feature macro BOOST_HAS_TR1_HASH is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_MEM_FN -# ifndef BOOST_HAS_TR1_MEM_FN -# error "Feature macro BOOST_HAS_TR1_MEM_FN is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_RANDOM -# ifndef BOOST_HAS_TR1_RANDOM -# error "Feature macro BOOST_HAS_TR1_RANDOM is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_REFERENCE_WRAPPER -# ifndef BOOST_HAS_TR1_REFERENCE_WRAPPER -# error "Feature macro BOOST_HAS_TR1_REFERENCE_WRAPPER is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_REGEX -# ifndef BOOST_HAS_TR1_REGEX -# error "Feature macro BOOST_HAS_TR1_REGEX is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_RESULT_OF -# ifndef BOOST_HAS_TR1_RESULT_OF -# error "Feature macro BOOST_HAS_TR1_RESULT_OF is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_SHARED_PTR -# ifndef BOOST_HAS_TR1_SHARED_PTR -# error "Feature macro BOOST_HAS_TR1_SHARED_PTR is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_TUPLE -# ifndef BOOST_HAS_TR1_TUPLE -# error "Feature macro BOOST_HAS_TR1_TUPLE is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_TYPE_TRAITS -# ifndef BOOST_HAS_TR1_TYPE_TRAITS -# error "Feature macro BOOST_HAS_TR1_TYPE_TRAITS is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_UNORDERED_MAP -# ifndef BOOST_HAS_TR1_UNORDERED_MAP -# error "Feature macro BOOST_HAS_TR1_UNORDERED_MAP is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_UNORDERED_SET -# ifndef BOOST_HAS_TR1_UNORDERED_SET -# error "Feature macro BOOST_HAS_TR1_UNORDERED_SET is not defined." -# endif -#endif -#ifdef TEST_BOOST_HAS_TR1_UTILITY -# ifndef BOOST_HAS_TR1_UTILITY -# error "Feature macro BOOST_HAS_TR1_UTILITY is not defined." -# endif -#endif #ifdef TEST_BOOST_HAS_UNISTD_H # ifndef BOOST_HAS_UNISTD_H # error "Feature macro BOOST_HAS_UNISTD_H is not defined." diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index db1f5a1c..22be62f8 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Wed May 17 01:29:40 2017 +# This file was automatically generated on Sun May 28 10:05:49 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -115,57 +115,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 ] ; 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/config_info.cpp b/test/config_info.cpp index 5b600624..2b6b862b 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -977,23 +977,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); @@ -1172,6 +1155,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 176902d1..a263c911 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed May 17 01:29:40 2017 +// This file was automatically generated on Sun May 28 10:05:49 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -933,91 +933,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 @@ -1201,91 +1116,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; diff --git a/test/has_tr1_array_fail.cpp b/test/has_tr1_array_fail.cpp deleted file mode 100644 index 36a33a15..00000000 --- a/test/has_tr1_array_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 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_ARRAY -// 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 - -// 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_ARRAY -#include "boost_has_tr1_array.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_array::test(); -} - diff --git a/test/has_tr1_array_pass.cpp b/test/has_tr1_array_pass.cpp deleted file mode 100644 index 4b073157..00000000 --- a/test/has_tr1_array_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 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_ARRAY -// 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 - -// 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_ARRAY -#include "boost_has_tr1_array.ipp" -#else -namespace boost_has_tr1_array = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_array::test(); -} - diff --git a/test/has_tr1_bind_fail.cpp b/test/has_tr1_bind_fail.cpp deleted file mode 100644 index 7af7516e..00000000 --- a/test/has_tr1_bind_fail.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 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_BIND -// 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 - -// 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_BIND -#include "boost_has_tr1_bind.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_bind::test(); -} - diff --git a/test/has_tr1_bind_pass.cpp b/test/has_tr1_bind_pass.cpp deleted file mode 100644 index 54a6a6be..00000000 --- a/test/has_tr1_bind_pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// This file was automatically generated on Sat Jul 12 12:39:31 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_BIND -// 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 - -// 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_BIND -#include "boost_has_tr1_bind.ipp" -#else -namespace boost_has_tr1_bind = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_bind::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_function_fail.cpp b/test/has_tr1_function_fail.cpp deleted file mode 100644 index f6e3a2db..00000000 --- a/test/has_tr1_function_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_FUNCTION -// 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 - -// 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_FUNCTION -#include "boost_has_tr1_function.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_function::test(); -} - diff --git a/test/has_tr1_function_pass.cpp b/test/has_tr1_function_pass.cpp deleted file mode 100644 index 8aa466c1..00000000 --- a/test/has_tr1_function_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_FUNCTION -// 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 - -// 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_FUNCTION -#include "boost_has_tr1_function.ipp" -#else -namespace boost_has_tr1_function = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_function::test(); -} - diff --git a/test/has_tr1_hash_fail.cpp b/test/has_tr1_hash_fail.cpp deleted file mode 100644 index 2c072e88..00000000 --- a/test/has_tr1_hash_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_HASH -// 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 - -// 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_HASH -#include "boost_has_tr1_hash.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_hash::test(); -} - diff --git a/test/has_tr1_hash_pass.cpp b/test/has_tr1_hash_pass.cpp deleted file mode 100644 index 48c29347..00000000 --- a/test/has_tr1_hash_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_HASH -// 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 - -// 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_HASH -#include "boost_has_tr1_hash.ipp" -#else -namespace boost_has_tr1_hash = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_hash::test(); -} - diff --git a/test/has_tr1_mem_fn_fail.cpp b/test/has_tr1_mem_fn_fail.cpp deleted file mode 100644 index 01bff252..00000000 --- a/test/has_tr1_mem_fn_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_MEM_FN -// 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 - -// 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_MEM_FN -#include "boost_has_tr1_mem_fn.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_mem_fn::test(); -} - diff --git a/test/has_tr1_mem_fn_pass.cpp b/test/has_tr1_mem_fn_pass.cpp deleted file mode 100644 index 9a1398d0..00000000 --- a/test/has_tr1_mem_fn_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_MEM_FN -// 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 - -// 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_MEM_FN -#include "boost_has_tr1_mem_fn.ipp" -#else -namespace boost_has_tr1_mem_fn = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_mem_fn::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_fail.cpp b/test/has_tr1_regex_fail.cpp deleted file mode 100644 index 7daac732..00000000 --- a/test/has_tr1_regex_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_REGEX -// 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 - -// 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_REGEX -#include "boost_has_tr1_regex.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_tr1_regex::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/tools/generate.cpp b/tools/generate.cpp index 1ef9e69e..53c73be3 100644 --- a/tools/generate.cpp +++ b/tools/generate.cpp @@ -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) From fe063709724f63d328fd2e07235e26bfe070bcba Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Mon, 29 May 2017 01:16:47 -0400 Subject: [PATCH 103/261] Add BOOST_NO_CXX17_STRUCTURED_BINDINGS detection --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- include/boost/config/compiler/borland.hpp | 8 ++++ include/boost/config/compiler/clang.hpp | 4 ++ include/boost/config/compiler/codegear.hpp | 9 +++++ include/boost/config/compiler/common_edg.hpp | 5 +++ include/boost/config/compiler/digitalmars.hpp | 5 +++ include/boost/config/compiler/gcc.hpp | 5 +++ include/boost/config/compiler/gcc_xml.hpp | 5 +++ include/boost/config/compiler/metrowerks.hpp | 5 +++ include/boost/config/compiler/mpw.hpp | 5 +++ include/boost/config/compiler/pathscale.hpp | 5 +++ include/boost/config/compiler/pgi.hpp | 5 +++ include/boost/config/compiler/sunpro_cc.hpp | 5 +++ include/boost/config/compiler/vacpp.hpp | 5 +++ include/boost/config/compiler/visualc.hpp | 2 + include/boost/config/compiler/xlcpp.hpp | 4 ++ include/boost/config/compiler/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_structured_bindings.ipp | 36 ++++++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++++- test/no_cxx17_structured_bindings_fail.cpp | 37 +++++++++++++++++++ test/no_cxx17_structured_bindings_pass.cpp | 37 +++++++++++++++++++ 24 files changed, 213 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx17_structured_bindings.ipp create mode 100644 test/no_cxx17_structured_bindings_fail.cpp create mode 100644 test/no_cxx17_structured_bindings_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 961501c3..73ece5f5 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun May 28 10:05:49 2017 +# This file was automatically generated on Mon May 29 09:56:04 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -111,6 +111,7 @@ obj cxx14_std_exchange : test_case.cpp : TEST_BOOST_NO_CXX14_STD_EXCHANG obj cxx14_variable_templates : test_case.cpp : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ; obj cxx17_std_apply : test_case.cpp : TEST_BOOST_NO_CXX17_STD_APPLY ; obj cxx17_std_invoke : test_case.cpp : TEST_BOOST_NO_CXX17_STD_INVOKE ; +obj 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 76a12223..f27fb2bd 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun May 28 10:05:49 2017 +// 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 @@ -511,6 +511,11 @@ # 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." diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index b749496e..45b5afd1 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -228,6 +228,14 @@ # 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 __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 175229c6..d7f7ecc1 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -282,6 +282,10 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + #if __cplusplus < 201103L #define BOOST_NO_CXX11_SFINAE_EXPR #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 3c5262fe..9aead59e 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -154,6 +154,15 @@ # 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 + // // TR1 macros: // diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index eab93784..b1eea14d 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -138,6 +138,11 @@ # 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 + #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/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index e371a68e..5c680248 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -114,6 +114,11 @@ # 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 (__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 c82cbc7e..0272333a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -288,6 +288,11 @@ # 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 + // // Unused attribute: #if __GNUC__ >= 4 diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 63b08ac4..a71c1682 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -92,6 +92,11 @@ # 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 + #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 8d42563c..24b26437 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -157,6 +157,11 @@ # 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 + #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 1b8d39ea..687a3595 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -106,6 +106,11 @@ # 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 + // // versions check: // we don't support MPW prior to version 8.9: diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 709f8cf8..aa5cc8c1 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -118,4 +118,9 @@ #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 #endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index af700514..4f851b9a 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -151,6 +151,11 @@ #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 // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index cdd30b14..8efd0bfb 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -172,6 +172,11 @@ # 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 + // Turn on threading support for Solaris 12. // Ticket #11972 #if (__SUNPRO_CC >= 0x5140) && defined(__SunOS_5_12) && !defined(BOOST_HAS_THREADS) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index b75a1bd1..a31fd12f 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -162,3 +162,8 @@ #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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index f51f0e1d..4786616d 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -218,6 +218,8 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_CXX11_SFINAE_EXPR +// C++ 17: +#define BOOST_NO_CXX17_STRUCTURED_BINDINGS // // Things that don't work in clr mode: diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index 2aaafc3b..2bce08ac 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -238,6 +238,10 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif +#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) +# define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#endif + #if !__has_feature(cxx_thread_local) # define BOOST_NO_CXX11_THREAD_LOCAL #endif diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 7f6d2ad0..cc5e2363 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -150,6 +150,7 @@ #define BOOST_NO_CXX14_DECLTYPE_AUTO #define BOOST_NO_CXX14_CONSTEXPR #define BOOST_NO_CXX14_BINARY_LITERALS +#define BOOST_NO_CXX17_STRUCTURED_BINDINGS // ------------------------------------- diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 22be62f8..c47fd69c 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun May 28 10:05:49 2017 +# This file was automatically generated on Mon May 29 09:56:04 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -322,6 +322,9 @@ test-suite "BOOST_NO_CXX17_STD_APPLY" : test-suite "BOOST_NO_CXX17_STD_INVOKE" : [ run ../no_cxx17_std_invoke_pass.cpp ] [ compile-fail ../no_cxx17_std_invoke_fail.cpp ] ; +test-suite "BOOST_NO_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 ] ; 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/config_info.cpp b/test/config_info.cpp index 2b6b862b..dee413c7 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1069,6 +1069,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES); PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); + PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS); PRINT_MACRO(BOOST_NO_CXX98_BINDERS); PRINT_MACRO(BOOST_NO_CXX98_FUNCTION_BASE); PRINT_MACRO(BOOST_NO_CXX98_RANDOM_SHUFFLE); @@ -1156,6 +1157,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index a263c911..6860b00b 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun May 28 10:05:49 2017 +// 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 @@ -342,6 +342,11 @@ namespace boost_no_cxx17_std_apply = empty_boost; #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 @@ -1461,6 +1466,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX17_STD_INVOKE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_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; 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(); +} + From 199577821118e1348a4ebe96ea8e77a135d41d61 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Mon, 29 May 2017 09:34:41 -0400 Subject: [PATCH 104/261] Add BOOST_NO_CXX17_INLINE_VARIABLES detection --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- include/boost/config/compiler/clang.hpp | 9 +++++ include/boost/config/compiler/common_edg.hpp | 3 ++ include/boost/config/compiler/digitalmars.hpp | 3 ++ include/boost/config/compiler/gcc.hpp | 3 ++ include/boost/config/compiler/gcc_xml.hpp | 3 ++ include/boost/config/compiler/metrowerks.hpp | 3 ++ include/boost/config/compiler/mpw.hpp | 3 ++ include/boost/config/compiler/pathscale.hpp | 3 ++ include/boost/config/compiler/pgi.hpp | 3 ++ include/boost/config/compiler/sunpro_cc.hpp | 3 ++ include/boost/config/compiler/vacpp.hpp | 3 ++ include/boost/config/compiler/visualc.hpp | 1 + include/boost/config/compiler/xlcpp.hpp | 9 +++++ include/boost/config/compiler/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_inline_variables.ipp | 27 ++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++++- test/no_cxx17_inline_variables_fail.cpp | 37 +++++++++++++++++++ test/no_cxx17_inline_variables_pass.cpp | 37 +++++++++++++++++++ 22 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx17_inline_variables.ipp create mode 100644 test/no_cxx17_inline_variables_fail.cpp create mode 100644 test/no_cxx17_inline_variables_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 73ece5f5..fe46f896 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 09:56:04 2017 +# This file was automatically generated on Mon May 29 10:00:26 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -109,6 +109,7 @@ obj cxx14_aggregate_nsdmi : test_case.cpp : TEST_BOOST_NO_CXX14_AGGREGAT 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_inline_variables : test_case.cpp : TEST_BOOST_NO_CXX17_INLINE_VARIABLES ; 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index f27fb2bd..3de59c60 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 09:56:04 2017 +// 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 @@ -501,6 +501,11 @@ # error "Defect macro BOOST_NO_CXX14_VARIABLE_TEMPLATES 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_STD_APPLY # ifdef BOOST_NO_CXX17_STD_APPLY # error "Defect macro BOOST_NO_CXX17_STD_APPLY is defined." diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index d7f7ecc1..dc020173 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 @@ -286,6 +290,11 @@ # define BOOST_NO_CXX17_STRUCTURED_BINDINGS #endif +// Clang 3.9+ in c++1z +#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif + #if __cplusplus < 201103L #define BOOST_NO_CXX11_SFINAE_EXPR #endif diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index b1eea14d..a34f3f37 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -142,6 +142,9 @@ #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 #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 5c680248..2e48c55b 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -118,6 +118,9 @@ #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 (__DMC__ <= 0x840) #error "Compiler not supported or configured - please reconfigure" diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 0272333a..e66c23b8 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -292,6 +292,9 @@ #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 // // Unused attribute: diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index a71c1682..9bcda105 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -96,6 +96,9 @@ #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 #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 24b26437..852fa3ae 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -161,6 +161,9 @@ #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 #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 687a3595..7160e52e 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -110,6 +110,9 @@ #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 // // versions check: diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index aa5cc8c1..47d7b9e6 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -123,4 +123,7 @@ #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 #endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 4f851b9a..8999ad03 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -156,6 +156,9 @@ #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 // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 8efd0bfb..628d237f 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -176,6 +176,9 @@ #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 // Turn on threading support for Solaris 12. // Ticket #11972 diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index a31fd12f..9838008a 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -167,3 +167,6 @@ #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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 4786616d..726fcf8e 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -220,6 +220,7 @@ #define BOOST_NO_CXX11_SFINAE_EXPR // C++ 17: #define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#define BOOST_NO_CXX17_INLINE_VARIABLES // // Things that don't work in clr mode: diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index 2bce08ac..f8161110 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 @@ -242,6 +246,11 @@ # define BOOST_NO_CXX17_STRUCTURED_BINDINGS #endif +// Clang 3.9+ in c++1z +#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L +# define BOOST_NO_CXX17_INLINE_VARIABLES +#endif + #if !__has_feature(cxx_thread_local) # define BOOST_NO_CXX11_THREAD_LOCAL #endif diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index cc5e2363..846c837a 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -151,6 +151,7 @@ #define BOOST_NO_CXX14_CONSTEXPR #define BOOST_NO_CXX14_BINARY_LITERALS #define BOOST_NO_CXX17_STRUCTURED_BINDINGS +#define BOOST_NO_CXX17_INLINE_VARIABLES // ------------------------------------- diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index c47fd69c..b8270835 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 09:56:04 2017 +# This file was automatically generated on Mon May 29 10:00:26 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -316,6 +316,9 @@ test-suite "BOOST_NO_CXX14_STD_EXCHANGE" : 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_INLINE_VARIABLES" : +[ run ../no_cxx17_inline_variables_pass.cpp ] +[ compile-fail ../no_cxx17_inline_variables_fail.cpp ] ; test-suite "BOOST_NO_CXX17_STD_APPLY" : [ run ../no_cxx17_std_apply_pass.cpp ] [ compile-fail ../no_cxx17_std_apply_fail.cpp ] ; 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/config_info.cpp b/test/config_info.cpp index dee413c7..9beeb65f 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1067,6 +1067,7 @@ void print_boost_macros() 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_INLINE_VARIABLES); PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS); @@ -1158,6 +1159,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 6860b00b..4bc52a0e 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 09:56:04 2017 +// 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 @@ -332,6 +332,11 @@ namespace boost_no_cxx14_std_exchange = empty_boost; #else namespace boost_no_cxx14_variable_templates = 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_STD_APPLY #include "boost_no_cxx17_std_apply.ipp" #else @@ -1456,6 +1461,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX14_VARIABLE_TEMPLATES 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_std_apply::test()) { std::cerr << "Failed test for BOOST_NO_CXX17_STD_APPLY at: " << __FILE__ << ":" << __LINE__ << std::endl; 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(); +} + From a6ccb8f910f6004f54466cfa2803c64704d2a441 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Mon, 29 May 2017 10:15:41 -0400 Subject: [PATCH 105/261] Add BOOST_NO_CXX17_FOLD_EXPRESSIONS detection --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- include/boost/config/compiler/borland.hpp | 3 ++ include/boost/config/compiler/clang.hpp | 1 + include/boost/config/compiler/codegear.hpp | 4 ++ include/boost/config/compiler/common_edg.hpp | 3 ++ include/boost/config/compiler/digitalmars.hpp | 3 ++ include/boost/config/compiler/gcc.hpp | 3 ++ include/boost/config/compiler/gcc_xml.hpp | 3 ++ include/boost/config/compiler/metrowerks.hpp | 3 ++ include/boost/config/compiler/mpw.hpp | 3 ++ include/boost/config/compiler/pathscale.hpp | 3 ++ include/boost/config/compiler/pgi.hpp | 3 ++ include/boost/config/compiler/sunpro_cc.hpp | 3 ++ include/boost/config/compiler/vacpp.hpp | 3 ++ include/boost/config/compiler/visualc.hpp | 1 + include/boost/config/compiler/xlcpp.hpp | 1 + include/boost/config/compiler/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_fold_expressions.ipp | 27 ++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++++- test/no_cxx17_fold_expressions_fail.cpp | 37 +++++++++++++++++++ test/no_cxx17_fold_expressions_pass.cpp | 37 +++++++++++++++++++ 24 files changed, 167 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx17_fold_expressions.ipp create mode 100644 test/no_cxx17_fold_expressions_fail.cpp create mode 100644 test/no_cxx17_fold_expressions_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index fe46f896..2aec5db7 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 10:00:26 2017 +# This file was automatically generated on Mon May 29 10:27:35 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -109,6 +109,7 @@ obj cxx14_aggregate_nsdmi : test_case.cpp : TEST_BOOST_NO_CXX14_AGGREGAT 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_inline_variables : test_case.cpp : TEST_BOOST_NO_CXX17_INLINE_VARIABLES ; 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 3de59c60..364af02e 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 10:00:26 2017 +// 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 @@ -501,6 +501,11 @@ # 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_INLINE_VARIABLES # ifdef BOOST_NO_CXX17_INLINE_VARIABLES # error "Defect macro BOOST_NO_CXX17_INLINE_VARIABLES is defined." diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 45b5afd1..fa891def 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -235,6 +235,9 @@ #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 __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index dc020173..46ccbb68 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -293,6 +293,7 @@ // 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 diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 9aead59e..44ca8428 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -163,6 +163,10 @@ # define BOOST_NO_CXX17_INLINE_VARIABLES #endif +#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) +# define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif + // // TR1 macros: // diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index a34f3f37..d49ceb68 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -145,6 +145,9 @@ #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 #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 2e48c55b..e4c5afdd 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -121,6 +121,9 @@ #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 (__DMC__ <= 0x840) #error "Compiler not supported or configured - please reconfigure" diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index e66c23b8..a759c4b4 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -295,6 +295,9 @@ #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 // // Unused attribute: diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 9bcda105..2b47585a 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -99,6 +99,9 @@ #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 #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 852fa3ae..99ff0f5e 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -164,6 +164,9 @@ #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 #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 7160e52e..d9544345 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -113,6 +113,9 @@ #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 // // versions check: diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 47d7b9e6..94b3f91d 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -126,4 +126,7 @@ #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 #endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 8999ad03..4c402ba0 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -159,6 +159,9 @@ #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 // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 628d237f..2453e7cf 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -179,6 +179,9 @@ #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 // Turn on threading support for Solaris 12. // Ticket #11972 diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 9838008a..683c167d 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -170,3 +170,6 @@ #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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 726fcf8e..516dc4fe 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -221,6 +221,7 @@ // C++ 17: #define BOOST_NO_CXX17_STRUCTURED_BINDINGS #define BOOST_NO_CXX17_INLINE_VARIABLES +#define BOOST_NO_CXX17_FOLD_EXPRESSIONS // // Things that don't work in clr mode: diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index f8161110..b267f49b 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -249,6 +249,7 @@ // 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) diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index 846c837a..c554903a 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -152,6 +152,7 @@ #define BOOST_NO_CXX14_BINARY_LITERALS #define BOOST_NO_CXX17_STRUCTURED_BINDINGS #define BOOST_NO_CXX17_INLINE_VARIABLES +#define BOOST_NO_CXX17_FOLD_EXPRESSIONS // ------------------------------------- diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index b8270835..78f4db2a 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 10:00:26 2017 +# This file was automatically generated on Mon May 29 10:27:35 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -316,6 +316,9 @@ test-suite "BOOST_NO_CXX14_STD_EXCHANGE" : 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_INLINE_VARIABLES" : [ run ../no_cxx17_inline_variables_pass.cpp ] [ compile-fail ../no_cxx17_inline_variables_fail.cpp ] ; 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/config_info.cpp b/test/config_info.cpp index 9beeb65f..3fe9d9df 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1067,6 +1067,7 @@ void print_boost_macros() 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_INLINE_VARIABLES); PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY); PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE); @@ -1160,6 +1161,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 4bc52a0e..93e838a6 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 10:00:26 2017 +// 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 @@ -332,6 +332,11 @@ namespace boost_no_cxx14_std_exchange = empty_boost; #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_INLINE_VARIABLES #include "boost_no_cxx17_inline_variables.ipp" #else @@ -1461,6 +1466,11 @@ int main( int, char *[] ) 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_inline_variables::test()) { std::cerr << "Failed test for BOOST_NO_CXX17_INLINE_VARIABLES at: " << __FILE__ << ":" << __LINE__ << std::endl; 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(); +} + From c08b859996cae942eb4919a9f4e1abe37154ab21 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 29 May 2017 18:22:10 +0100 Subject: [PATCH 106/261] MSVC2017: Add appveyor testing. Disable C++14 constexpr support as our tests don't pass. --- appveyor.yml | 12 ++++++++---- include/boost/config/compiler/visualc.hpp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 5023f41b..190d6fa9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,6 +16,12 @@ platform: 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 - ARGS: --toolset=msvc-9.0 address-model=32 - ARGS: --toolset=msvc-10.0 address-model=32 - ARGS: --toolset=msvc-11.0 address-model=32 @@ -23,6 +29,7 @@ environment: - 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 PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - ARGS: --toolset=gcc address-model=64 cxxflags=-std=gnu++1z @@ -44,14 +51,11 @@ install: - git submodule update --init libs/type_traits - bootstrap - b2 headers - - dir - + build: off test_script: - - dir - cd libs\config\test - ..\..\..\b2 config_info_travis_install %ARGS% - - dir - config_info_travis - ..\..\..\b2 -j3 %ARGS% diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index f51f0e1d..53c5ed6e 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -194,7 +194,6 @@ // #if (_MSC_VER < 1910) # define BOOST_NO_CXX14_AGGREGATE_NSDMI -# define BOOST_NO_CXX14_CONSTEXPR #endif // MSVC including version 14 has not yet completely @@ -218,6 +217,7 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_CXX11_SFINAE_EXPR +# define BOOST_NO_CXX14_CONSTEXPR // // Things that don't work in clr mode: From 62189d3b860769923b007d1982682159a8de80d9 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Sun, 11 Jun 2017 17:50:15 -0400 Subject: [PATCH 107/261] Add BOOST_FALLTHROUGH for gcc --- include/boost/config/compiler/gcc.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index a759c4b4..da05a63e 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -299,6 +299,10 @@ # define BOOST_NO_CXX17_FOLD_EXPRESSIONS #endif +#if __GNUC__ >= 7 +# define BOOST_FALLTHROUGH __attribute__((fallthrough)) +#endif + // // Unused attribute: #if __GNUC__ >= 4 From 2dfd1a95bab49afcc374aadb1491d8fde189db74 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Mon, 12 Jun 2017 07:57:34 -0400 Subject: [PATCH 108/261] Move workaround.hpp out of detail (used by more than Config) --- include/boost/config/workaround.hpp | 277 ++++++++++++++++++++++++++++ include/boost/detail/workaround.hpp | 271 +-------------------------- 2 files changed, 279 insertions(+), 269 deletions(-) create mode 100644 include/boost/config/workaround.hpp diff --git a/include/boost/config/workaround.hpp b/include/boost/config/workaround.hpp new file mode 100644 index 00000000..0ce8108c --- /dev/null +++ b/include/boost/config/workaround.hpp @@ -0,0 +1,277 @@ +// 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 +#else +#define BOOST_GCC_WORKAROUND_GUARD 0 +#endif +#ifndef BOOST_XLCPP_ZOS +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1 +#else +#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 0 +#endif +#ifndef __IBMCPP__ +#define __IBMCPP___WORKAROUND_GUARD 1 +#else +#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/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 1aaa5aed..fb961158 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -3,275 +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 BOOST_GCC -#define BOOST_GCC_WORKAROUND_GUARD 1 -#else -#define BOOST_GCC_WORKAROUND_GUARD 0 -#endif -#ifndef BOOST_XLCPP_ZOS -#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1 -#else -#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 0 -#endif -#ifndef __IBMCPP__ -#define __IBMCPP___WORKAROUND_GUARD 1 -#else -#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 From 0debb6db2f5e805f5d0128fe406bd9e40c6080fa Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 12 Jun 2017 19:38:54 +0100 Subject: [PATCH 109/261] Allow stdint.h for compilers other than gcc when building on linux with a recent glibc version. See https://svn.boost.org/trac/boost/ticket/13045. --- include/boost/config/platform/linux.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index db54677e..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 From fe5e07b521e49f6cca712c801e025fed13c23979 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:32:59 +0100 Subject: [PATCH 110/261] gcc.hpp: Mingw has broken thread_local support. See https://sourceforge.net/p/mingw-w64/bugs/527/ --- include/boost/config/compiler/gcc.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index da05a63e..d1cfed7a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -303,6 +303,13 @@ # 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 From 7d41f597cb6799a8c62a05081730e8efa22084f8 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:42:21 +0100 Subject: [PATCH 111/261] Tentative fix for clang-3.0 failing config_test: It appears not to completely support variadic template expansion. --- include/boost/config/compiler/clang.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 46ccbb68..157a94d2 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -310,6 +310,11 @@ #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__)) From d2b7f45ea26521bc7c15f02b81c0b205f65caf5c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:49:11 +0100 Subject: [PATCH 112/261] Add android detection macros to config_info output. --- test/config_info.cpp | 33 ++++----------------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/test/config_info.cpp b/test/config_info.cpp index 3fe9d9df..a7863f42 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -344,6 +344,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() @@ -1135,35 +1139,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_USING_TEMPLATE); PRINT_MACRO(BOOST_NO_VOID_RETURNS); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); From 9b8de65f1dae960ecfde689a99c83f39ba60e3f9 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 13:04:18 +0100 Subject: [PATCH 113/261] CUDA: disable some C++11 and 14 features which aren't supported when compiling as a .cu file. --- include/boost/config/compiler/nvcc.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index b31d4f4f..283b7803 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -30,3 +30,19 @@ #if defined(_MSC_VER) # 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: +// +#define BOOST_NO_CXX11_NOEXCEPT + +#endif + From d9332d3fa30e3760427a34f27e55fcfd3163d9eb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 17:53:14 +0100 Subject: [PATCH 114/261] Restrict last fix to CUDA 8 only - other versions are apparently unaffected. --- include/boost/config/compiler/nvcc.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 283b7803..7729d2c2 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -42,7 +42,9 @@ // // And this one effects the NVCC front end: // -#define BOOST_NO_CXX11_NOEXCEPT +#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100) +# define BOOST_NO_CXX11_NOEXCEPT +#endif #endif From 02dd07481dbc021937f10e58fc76eb666055177f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 17:54:41 +0100 Subject: [PATCH 115/261] Add link to bug report in comment. [ci skip] --- include/boost/config/compiler/nvcc.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 7729d2c2..43039b5c 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -40,7 +40,8 @@ # define BOOST_NO_CXX11_UNICODE_LITERALS #endif // -// And this one effects the NVCC front end: +// And this one effects the NVCC front end, +// See https://svn.boost.org/trac/boost/ticket/13049 // #if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100) # define BOOST_NO_CXX11_NOEXCEPT From e6deedfb335984d47082c489178ba360dab4bea6 Mon Sep 17 00:00:00 2001 From: rsd Date: Wed, 21 Jun 2017 14:35:04 -0500 Subject: [PATCH 116/261] Changed _RELEASE to _RELEASE_MAJOR. Mostly this is to test pushing to our fork. More to come. --- include/boost/config/compiler/cray.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index eab52877..0fd133a9 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -10,7 +10,7 @@ #define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) -#if _RELEASE < 8 +#if _RELEASE_MAJOR < 8 # error "Boost is not configured for Cray compilers prior to version 8, please try the configure script." #endif From bfd7d04440aa1e54133d401434d914b6660555ce Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Fri, 23 Jun 2017 14:26:04 -0500 Subject: [PATCH 117/261] config/cray.hpp updated for release 8.6 of CCE (Cray Compiler Environment) The default C++ standard support at this release is c++14, compared with c++03 in previous releases. modified: cray.hpp --- include/boost/config/compiler/cray.hpp | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 0fd133a9..f3e1baee 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -21,6 +21,7 @@ # error "Unsupported Cray compiler, please try running the configure script." #endif +#if _RELEASE_MINOR < 6 #include @@ -90,5 +91,31 @@ #define __ATOMIC_SEQ_CST 5 #endif +#else /* _RELEASE_MINOR */ + +#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 + +#endif /* _RELEASE_MINOR */ + From 214c04f139d035cc0c37a6cfecc254bb90e20dd4 Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Mon, 26 Jun 2017 15:31:49 -0500 Subject: [PATCH 118/261] Update cray configuration for C++11. Define BOOST_NO_CXX11_DECLTYPE_N3276 when __cplusplus < 201400. This is for boost/variant. --- include/boost/config/compiler/cray.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index f3e1baee..a4435dd5 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -115,6 +115,10 @@ #define BOOST_HAS_LONG_LONG #define BOOST_HAS_FLOAT128 +#if __cplusplus < 201400 +#define BOOST_NO_CXX11_DECLTYPE_N3276 +#endif /* __cpluspus */ + #endif /* _RELEASE_MINOR */ From 437f334745a0c114295ddf9a8085e99299a602cf Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Tue, 27 Jun 2017 14:09:06 -0500 Subject: [PATCH 119/261] Update compiler/cray.hpp to support c++03 and both 8.5 and 8.6 releases. modified: cray.hpp --- include/boost/config/compiler/cray.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index a4435dd5..5f810781 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -21,10 +21,9 @@ # error "Unsupported Cray compiler, please try running the configure script." #endif -#if _RELEASE_MINOR < 6 +#if _RELEASE_MINOR < 5 || __cplusplus < 201100 #include - // // #define BOOST_NO_CXX11_STATIC_ASSERT From 80fb8000f0f4fd8dd2f842c95afab73861ef3a76 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 30 Jun 2017 20:57:59 +0300 Subject: [PATCH 120/261] Add address model to auto_link.hpp --- include/boost/config/auto_link.hpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index c71e8035..7b79cb37 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_ADDRESS_MODEL_OPT "-" + BOOST_LIB_VERSION @@ -69,6 +70,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, p STLport build. n STLport build without its IOStreams. +BOOST_LIB_ADDRESS_MODEL_OPT: The address model (-32 or -64) + BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. @@ -361,6 +364,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #endif +// +// BOOST_LIB_ADDRESS_MODEL_OPT +// + +#if defined( _M_IX86 ) +# define BOOST_LIB_ADDRESS_MODEL_OPT "-32" +#elif defined( _M_X64 ) +# define BOOST_LIB_ADDRESS_MODEL_OPT "-64" +#endif + // // select linkage opt: // @@ -380,6 +393,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_ADDRESS_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED @@ -393,14 +407,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_ADDRESS_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_ADDRESS_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_ADDRESS_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_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # endif #endif @@ -431,6 +445,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_ADDRESS_MODEL_OPT) +# undef BOOST_LIB_ADDRESS_MODEL_OPT +#endif #if defined(BOOST_LIB_LINK_OPT) # undef BOOST_LIB_LINK_OPT #endif From 6098c81ee0d8e700143fb274d147af50b5d4b09a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 7 Jul 2017 02:56:46 +0300 Subject: [PATCH 121/261] Use architecture and address model in autolink, instead of just address model --- include/boost/config/auto_link.hpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 7b79cb37..271f8379 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -45,7 +45,7 @@ BOOST_LIB_PREFIX + BOOST_LIB_TOOLSET + BOOST_LIB_THREAD_OPT + BOOST_LIB_RT_OPT - + BOOST_LIB_ADDRESS_MODEL_OPT + + BOOST_LIB_ARCH_AND_MODEL_OPT "-" + BOOST_LIB_VERSION @@ -70,7 +70,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, p STLport build. n STLport build without its IOStreams. -BOOST_LIB_ADDRESS_MODEL_OPT: The address model (-32 or -64) +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. @@ -365,13 +366,17 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #endif // -// BOOST_LIB_ADDRESS_MODEL_OPT +// BOOST_LIB_ARCH_AND_MODEL_OPT // #if defined( _M_IX86 ) -# define BOOST_LIB_ADDRESS_MODEL_OPT "-32" +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x32" #elif defined( _M_X64 ) -# define BOOST_LIB_ADDRESS_MODEL_OPT "-64" +# 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 // @@ -393,7 +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_ADDRESS_MODEL_OPT) \ + && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED @@ -407,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_ADDRESS_MODEL_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_ADDRESS_MODEL_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_ADDRESS_MODEL_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_ADDRESS_MODEL_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 @@ -445,8 +450,8 @@ 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_ADDRESS_MODEL_OPT) -# undef BOOST_LIB_ADDRESS_MODEL_OPT +#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 From 4a58e5360a81b502078733ab4bec2abe033af8c2 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Wed, 12 Jul 2017 17:51:53 +0300 Subject: [PATCH 122/261] Added BOOST_MAY_ALIAS and BOOST_NO_MAY_ALIAS macros. The macros can be used to mark types that can alias other types (i.e. break C++ strict aliasing rules). --- doc/macro_reference.qbk | 12 ++++++++++++ include/boost/config/compiler/clang.hpp | 5 +++++ include/boost/config/compiler/gcc.hpp | 4 ++++ include/boost/config/compiler/intel.hpp | 6 ++++++ include/boost/config/compiler/vacpp.hpp | 5 +++++ include/boost/config/compiler/xlcpp.hpp | 5 +++++ include/boost/config/compiler/xlcpp_zos.hpp | 1 + include/boost/config/detail/suffix.hpp | 8 ++++++++ test/config_info.cpp | 2 ++ test/helper_macro_test.cpp | 3 +++ 10 files changed, 51 insertions(+) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index a0d51e89..8f024ba7 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -1262,6 +1262,18 @@ 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; +`` +]] ] [endsect] diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 157a94d2..0fdf331f 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -318,6 +318,11 @@ // 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/gcc.hpp b/include/boost/config/compiler/gcc.hpp index d1cfed7a..12958ab9 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -315,6 +315,10 @@ #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 diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index f55189a0..f549dcb6 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -311,6 +311,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, diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 683c167d..c8400a34 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 // diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index b267f49b..a4c66e40 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -267,6 +267,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 index c554903a..bc785b8a 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -159,6 +159,7 @@ #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 diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 6abec22f..caa0b229 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -602,6 +602,14 @@ namespace std{ using ::type_info; } # 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) diff --git a/test/config_info.cpp b/test/config_info.cpp index a7863f42..2a2a110d 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1152,6 +1152,8 @@ 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_separator() 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) From 34f320c4c9fbe45f367aa2e34507bbc95cee4da6 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sun, 9 Jul 2017 17:06:34 +0300 Subject: [PATCH 123/261] Added BOOST_NO_CXX17_ITERATOR_TRAITS macro. The macro indicates that the standard library does not implement SFINAE-friendly std::iterator_traits (LWG issue 2408, [iterator.traits]/2). --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- doc/macro_reference.qbk | 1 + include/boost/config/stdlib/dinkumware.hpp | 1 + include/boost/config/stdlib/libcomo.hpp | 1 + include/boost/config/stdlib/libcpp.hpp | 2 + include/boost/config/stdlib/libstdcpp3.hpp | 1 + include/boost/config/stdlib/modena.hpp | 1 + include/boost/config/stdlib/msl.hpp | 1 + include/boost/config/stdlib/roguewave.hpp | 1 + include/boost/config/stdlib/sgi.hpp | 1 + include/boost/config/stdlib/stlport.hpp | 1 + include/boost/config/stdlib/vacpp.hpp | 1 + include/boost/config/stdlib/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_iterator_traits.ipp | 49 ++++++++++++++++++++++ test/config_info.cpp | 3 ++ test/config_test.cpp | 12 +++++- test/no_cxx17_iterator_traits_fail.cpp | 37 ++++++++++++++++ test/no_cxx17_iterator_traits_pass.cpp | 37 ++++++++++++++++ 20 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx17_iterator_traits.ipp create mode 100644 test/no_cxx17_iterator_traits_fail.cpp create mode 100644 test/no_cxx17_iterator_traits_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 2aec5db7..77b7e9d2 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 10:27:35 2017 +# This file was automatically generated on Sun Jul 9 16:30:35 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -111,6 +111,7 @@ obj cxx14_std_exchange : test_case.cpp : TEST_BOOST_NO_CXX14_STD_EXCHANG obj cxx14_variable_templates : test_case.cpp : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ; obj cxx17_fold_expressions : test_case.cpp : TEST_BOOST_NO_CXX17_FOLD_EXPRESSIONS ; 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 364af02e..05f921f1 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 10:27:35 2017 +// This file was automatically generated on Sun Jul 9 16:30:35 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -511,6 +511,11 @@ # 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." diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index a0d51e89..85ed96e4 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -945,6 +945,7 @@ 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`.]] ] [endsect] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index daac5dfb..0af104d0 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -175,6 +175,7 @@ #endif #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) # define BOOST_NO_CXX17_STD_INVOKE +# define BOOST_NO_CXX17_ITERATOR_TRAITS #endif #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400) diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index ce83f082..75ac2bb7 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -79,6 +79,7 @@ // 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 9f3d259e..ad8aee32 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -97,6 +97,8 @@ # define BOOST_NO_AUTO_PTR #endif +#define BOOST_NO_CXX17_ITERATOR_TRAITS + #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 diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 9adbc8f1..6cd420a6 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -247,6 +247,7 @@ extern "C" char *gets (char *__s); #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 diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 98bdc3fb..81919e01 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -68,6 +68,7 @@ // 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 9606a9ae..0e2e2afe 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -92,5 +92,6 @@ // 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 380d0ff3..df602155 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -204,3 +204,4 @@ // 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 5016ff62..0c8ab2e4 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -162,5 +162,6 @@ // 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 81e6ccf0..2e304e2b 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -252,5 +252,6 @@ namespace boost { using std::min; using std::max; } // 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 c159af25..c4e1fb18 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -68,5 +68,6 @@ // 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 index dce40f50..4d5beb18 100644 --- a/include/boost/config/stdlib/xlcpp_zos.hpp +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -57,3 +57,4 @@ #define BOOST_NO_CXX17_STD_INVOKE #define BOOST_NO_CXX17_STD_APPLY +#define BOOST_NO_CXX17_ITERATOR_TRAITS diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 78f4db2a..d8e1636d 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon May 29 10:27:35 2017 +# This file was automatically generated on Sun Jul 9 16:30:35 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -322,6 +322,9 @@ test-suite "BOOST_NO_CXX17_FOLD_EXPRESSIONS" : 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 ] ; diff --git a/test/boost_no_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp new file mode 100644 index 00000000..ea75f232 --- /dev/null +++ b/test/boost_no_cxx17_iterator_traits.ipp @@ -0,0 +1,49 @@ +// 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 : + public std::iterator< std::random_access_iterator_tag, char > +{ +}; + +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() +{ + if (!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value) + return 1; + + if (has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value) + return 2; + + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index a7863f42..32ea8581 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1073,6 +1073,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES); PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS); 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); @@ -1139,6 +1140,8 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_USING_TEMPLATE); PRINT_MACRO(BOOST_NO_VOID_RETURNS); + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 93e838a6..446fa891 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 29 10:27:35 2017 +// This file was automatically generated on Sun Jul 9 16:30:35 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -342,6 +342,11 @@ namespace boost_no_cxx17_fold_expressions = empty_boost; #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 @@ -1476,6 +1481,11 @@ int main( int, char *[] ) 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; 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(); +} + From e2c4eb9de8a5cf2f975f226d62bba84e6cb9a07e Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Thu, 20 Jul 2017 14:15:50 -0500 Subject: [PATCH 124/261] add BOOST_HASH_NO_EXTENSIONS to compile/cray.hpp Avoid problems with multiple definitions of std::list using gnu headers. modified: cray.hpp --- include/boost/config/compiler/cray.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 5f810781..001e3606 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -113,6 +113,7 @@ #define BOOST_NO_CXX14_CONSTEXPR #define BOOST_HAS_LONG_LONG #define BOOST_HAS_FLOAT128 +#define BOOST_HASH_NO_EXTENSIONS #if __cplusplus < 201400 #define BOOST_NO_CXX11_DECLTYPE_N3276 From cdfa925095f204f28b9cb447b2a64641ad68a265 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 12 Jun 2017 19:38:54 +0100 Subject: [PATCH 125/261] Allow stdint.h for compilers other than gcc when building on linux with a recent glibc version. See https://svn.boost.org/trac/boost/ticket/13045. --- include/boost/config/platform/linux.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index db54677e..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 From e56e24f0a3f0115842a2361f8073cb3e8b0f51c5 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:32:59 +0100 Subject: [PATCH 126/261] gcc.hpp: Mingw has broken thread_local support. See https://sourceforge.net/p/mingw-w64/bugs/527/ --- include/boost/config/compiler/gcc.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index da05a63e..d1cfed7a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -303,6 +303,13 @@ # 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 From 573c1a50275101978166dabc3cb4322465b8fd50 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:42:21 +0100 Subject: [PATCH 127/261] Tentative fix for clang-3.0 failing config_test: It appears not to completely support variadic template expansion. --- include/boost/config/compiler/clang.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 46ccbb68..157a94d2 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -310,6 +310,11 @@ #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__)) From 08c7f03f2980ebec50a903025d35f6c60e33c3b3 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 14 Jun 2017 19:49:11 +0100 Subject: [PATCH 128/261] Add android detection macros to config_info output. --- test/config_info.cpp | 33 ++++----------------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/test/config_info.cpp b/test/config_info.cpp index 3fe9d9df..a7863f42 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -344,6 +344,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() @@ -1135,35 +1139,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_USING_TEMPLATE); PRINT_MACRO(BOOST_NO_VOID_RETURNS); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); From 9910b354e52070f4cfe188ce9b27aaa3665d6888 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 13:04:18 +0100 Subject: [PATCH 129/261] CUDA: disable some C++11 and 14 features which aren't supported when compiling as a .cu file. --- include/boost/config/compiler/nvcc.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index b31d4f4f..283b7803 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -30,3 +30,19 @@ #if defined(_MSC_VER) # 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: +// +#define BOOST_NO_CXX11_NOEXCEPT + +#endif + From 6415a2cd43c7b6681c0fdf361d1162d8d25bd743 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 17:53:14 +0100 Subject: [PATCH 130/261] Restrict last fix to CUDA 8 only - other versions are apparently unaffected. --- include/boost/config/compiler/nvcc.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 283b7803..7729d2c2 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -42,7 +42,9 @@ // // And this one effects the NVCC front end: // -#define BOOST_NO_CXX11_NOEXCEPT +#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100) +# define BOOST_NO_CXX11_NOEXCEPT +#endif #endif From 7e4a1c85b7c834cfc8a903f64d9225fac09c24cf Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 15 Jun 2017 17:54:41 +0100 Subject: [PATCH 131/261] Add link to bug report in comment. [ci skip] --- include/boost/config/compiler/nvcc.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 7729d2c2..43039b5c 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -40,7 +40,8 @@ # define BOOST_NO_CXX11_UNICODE_LITERALS #endif // -// And this one effects the NVCC front end: +// And this one effects the NVCC front end, +// See https://svn.boost.org/trac/boost/ticket/13049 // #if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100) # define BOOST_NO_CXX11_NOEXCEPT From 92ab15c361f9ee201dd92f4e9dc9fcdc2a750039 Mon Sep 17 00:00:00 2001 From: Richard Dale Date: Fri, 21 Jul 2017 08:20:15 -0500 Subject: [PATCH 132/261] Revert last change. We will fix this in the compiler. --- include/boost/config/compiler/cray.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 001e3606..5f810781 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -113,7 +113,6 @@ #define BOOST_NO_CXX14_CONSTEXPR #define BOOST_HAS_LONG_LONG #define BOOST_HAS_FLOAT128 -#define BOOST_HASH_NO_EXTENSIONS #if __cplusplus < 201400 #define BOOST_NO_CXX11_DECLTYPE_N3276 From d2b16361e631e0fb3b030c5bdee9ac3f15fbeef2 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Wed, 12 Jul 2017 20:48:48 +0300 Subject: [PATCH 133/261] Fixed references to headers in the docs. --- doc/config.qbk | 2 +- doc/guidelines.qbk | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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. From c21f170a97ad8c68bad66b05251c54ba8352b8f1 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 21 Jul 2017 19:08:40 +0100 Subject: [PATCH 134/261] Regenerate docs. --- .../boost_config/boost_macro_reference.html | 40 +++++++++++++++++++ .../guidelines_for_boost_authors.html | 10 ++--- doc/html/index.html | 4 +- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index da3866c0..667484f9 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3017,6 +3017,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 @@ -4480,6 +4492,34 @@

+ + +

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

+

+ + 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 76ba53d1..109e2013 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -757,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.

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

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

Last revised: July 21, 2017 at 18:08:20 GMT


From 5cf4d8b369e05e6221cd3f38bb0ba5fff5cf641a Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Wed, 26 Jul 2017 11:23:05 -0600 Subject: [PATCH 135/261] Fix bash paths in shebangs "/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable. --- test/link/bc_gen.sh | 2 +- test/link/vc_gen.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 From dd31807230b60030e12adbd0ebdd59ed6dfacc00 Mon Sep 17 00:00:00 2001 From: David Olsen Date: Wed, 26 Jul 2017 13:10:10 -0700 Subject: [PATCH 136/261] Update PGI C++ compiler support Remove an old PGI-specific workaround for intptr_t. The workaround is no longer necessary and now causes compilation errors. --- include/boost/cstdint.hpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 31b67417..e7799742 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -367,9 +367,6 @@ 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__) \ @@ -393,8 +390,6 @@ namespace boost { #endif -#endif // !defined(__PGIC__) - #endif // BOOST_CSTDINT_HPP From 4f1df700adb2007132f84fb95c03440630a9e821 Mon Sep 17 00:00:00 2001 From: David Olsen Date: Thu, 27 Jul 2017 14:49:09 -0700 Subject: [PATCH 137/261] Update PGI C++ compiler support When the PGI C++ compiler changed to be GNU compatible, pgi.hpp stopped being used, because the check for __GNUC__ in select_compiler_config.hpp was true before the preprocessor ever got to the check for __PGI. Rearrange the order of the checks in select_compiler_config.hpp, moving the check for __PGI above the check for __GNUC__. pgi.hpp was designed for a very old version of PGI C++, before it was GNU compatible. The settings in that file won't work for PGI compilers of the last few years. Replace the entire file with one that just includes gcc.hpp and then adjusts a few macros for areas where PGI is not quite GNU compatible. (The old PGI compilers are not actively being used by any customers that we (PGI) know of, so keeping the old contents of pgi.hpp would be of little or no benefit.) --- include/boost/config/compiler/pgi.hpp | 161 +----------------- .../config/detail/select_compiler_config.hpp | 8 +- 2 files changed, 12 insertions(+), 157 deletions(-) diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 4c402ba0..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,159 +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_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 - -// 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 -// -// 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/detail/select_compiler_config.hpp b/include/boost/config/detail/select_compiler_config.hpp index 97d47c1c..ced8443d 100644 --- a/include/boost/config/detail/select_compiler_config.hpp +++ b/include/boost/config/detail/select_compiler_config.hpp @@ -52,6 +52,10 @@ // 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" @@ -108,10 +112,6 @@ // 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++ // From b2ee38f94b9d7a12d9a9f504c37c1f8f81c97609 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Sun, 6 Aug 2017 17:53:56 -0700 Subject: [PATCH 138/261] Add code to set for BOOST_NO_CXX98_RANDOM_SHUFFLE and BOOST_NO_CXX98_BINDERS correctly --- include/boost/config/stdlib/libcpp.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index ad8aee32..10b69176 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -96,6 +96,12 @@ #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_RANDOM_SHUFFLE) +# define BOOST_NO_CXX98_BINDERS +#endif #define BOOST_NO_CXX17_ITERATOR_TRAITS From 186a7316b9be11f5e3262c0c8c4382bd77aba325 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 7 Aug 2017 06:11:30 -0700 Subject: [PATCH 139/261] Fix copy-paste-o Now checks `_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS` instead. --- include/boost/config/stdlib/libcpp.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 10b69176..3d3f4ae4 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -99,7 +99,7 @@ #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_RANDOM_SHUFFLE) +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) # define BOOST_NO_CXX98_BINDERS #endif From d23ba31dad1ecfc6032fb8b3ecf19bd92bd3992c Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Tue, 8 Aug 2017 17:36:58 -0700 Subject: [PATCH 140/261] Incorrect MSVC version detection I know, Boost doesn't support MSVC 5.0 and 6.0. But the expression is invalid. Another way to fix it: ```c++ # if _MSC_VER < 1300 // Note: Versions up to 7.0 aren't supported. # define BOOST_COMPILER_VERSION 6.0 # elif _MSC_VER < 1310 # define BOOST_COMPILER_VERSION 7.0 ``` --- include/boost/config/compiler/visualc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index c0557de7..9e470f08 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -289,7 +289,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 From 1e544eae215721290e1f019544083e19d45f81da Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Sun, 6 Aug 2017 17:53:56 -0700 Subject: [PATCH 141/261] Add code to set for BOOST_NO_CXX98_RANDOM_SHUFFLE and BOOST_NO_CXX98_BINDERS correctly --- include/boost/config/stdlib/libcpp.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 9f3d259e..a3cc523c 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -96,6 +96,12 @@ #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_RANDOM_SHUFFLE) +# define BOOST_NO_CXX98_BINDERS +#endif #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 From 9e51aa81ca4c6be6f6af953dc97b9e9c942cc701 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 7 Aug 2017 06:11:30 -0700 Subject: [PATCH 142/261] Fix copy-paste-o Now checks `_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS` instead. --- include/boost/config/stdlib/libcpp.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index a3cc523c..9c58965f 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -99,7 +99,7 @@ #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_RANDOM_SHUFFLE) +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) # define BOOST_NO_CXX98_BINDERS #endif From 994e3cbba1acf48471b904499f52b9e32fe749df Mon Sep 17 00:00:00 2001 From: Brian Kuhl Date: Thu, 10 Aug 2017 12:40:22 -0400 Subject: [PATCH 143/261] VxWorks is also using ::intptr_t in boost namespace --- include/boost/cstdint.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index e7799742..5e1411a5 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -369,7 +369,7 @@ namespace boost #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(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX) From b8fe4fe5e0ac0b0ef3d37022749193a634f86ece Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Thu, 10 Aug 2017 16:34:53 -0700 Subject: [PATCH 144/261] Bump version number to 1.66 --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 725165f4..d8f2132a 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 106500 +#define BOOST_VERSION 106600 // // 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_65" +#define BOOST_LIB_VERSION "1_66" #endif From 17a4997aaa05ce92237c73c82e6d8fb475a0abaf Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 11 Aug 2017 19:38:00 +0100 Subject: [PATCH 145/261] Update for CUDA version macro changes. --- include/boost/config/compiler/nvcc.hpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 43039b5c..907eade9 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -11,6 +11,15 @@ # 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__ * 10000 + __CUDACC_VER_MINOR__ * 100 + __CUDACC_VER_BUILD__ +#elif defined(__CUDACC_VER__) + define BOOST_CUDA_VERSION __CUDACC_VER__ +#else +// We don't really know what the CUDA version is, but it's definitely before 7.5: +# define BOOST_CUDA_VERSION 70000 +#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,11 +28,11 @@ // 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 < 70500 # 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 > 80000) && (BOOST_CUDA_VERSION < 80100) # define BOOST_NO_CXX11_VARIADIC_TEMPLATES #endif // Most recent CUDA (8.0) has no constexpr support in msvc mode: @@ -43,7 +52,7 @@ // And this one effects the NVCC front end, // See https://svn.boost.org/trac/boost/ticket/13049 // -#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100) +#if (BOOST_CUDA_VERSION >= 80000) && (BOOST_CUDA_VERSION < 80100) # define BOOST_NO_CXX11_NOEXCEPT #endif From a0147b73e8bde8f4b2c19c96166353dba8fa9914 Mon Sep 17 00:00:00 2001 From: Minmin Gong Date: Mon, 14 Aug 2017 18:49:00 -0700 Subject: [PATCH 146/261] Update last known MSVC version to 19.11.25506 (VS2017.3). --- include/boost/config/compiler/visualc.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 9e470f08..c1cddf04 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -321,8 +321,8 @@ #endif // -// last known and checked version is 19.10.25017 (VC++ 2017): -#if (_MSC_VER > 1910) +// last known and checked version is 19.11.25506 (VC++ 2017.3): +#if (_MSC_VER > 1911) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From 8c9e237f2666e6e89f82d1a0d378f86355c62668 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 17 Aug 2017 17:51:48 +0100 Subject: [PATCH 147/261] Improve outdated configuration / new compiler messages. --- include/boost/config/compiler/gcc.hpp | 6 +++--- include/boost/config/compiler/intel.hpp | 2 +- include/boost/config/compiler/sunpro_cc.hpp | 4 ++-- include/boost/config/compiler/visualc.hpp | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 12958ab9..c67ab818 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -342,10 +342,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 "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/intel.hpp b/include/boost/config/compiler/intel.hpp index f549dcb6..00396b03 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -551,7 +551,7 @@ template<> struct assert_intrinsic_wchar_t {}; // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1700) # if defined(BOOST_ASSERT_CONFIG) -# error "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/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 2453e7cf..56901840 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -203,8 +203,8 @@ #endif // // last known and checked version is 0x590: -#if (__SUNPRO_CC > 0x590) +#if (__SUNPRO_CC > 0x5150) # if defined(BOOST_ASSERT_CONFIG) -# error "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/visualc.hpp b/include/boost/config/compiler/visualc.hpp index c1cddf04..1a3f7824 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -324,8 +324,8 @@ // last known and checked version is 19.11.25506 (VC++ 2017.3): #if (_MSC_VER > 1911) # if defined(BOOST_ASSERT_CONFIG) -# error "Unknown compiler version - please run the configure tests and report the results" -# else -# pragma message("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) +# pragma message("Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message.") # endif #endif From bb22ab3c5f58600beccd0101ecd84f7b9577cd27 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 18 Aug 2017 08:04:06 +0100 Subject: [PATCH 148/261] Update sunpro_cc.hpp --- include/boost/config/compiler/sunpro_cc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 56901840..54ad77a3 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -202,7 +202,7 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 0x590: +// last known and checked version: #if (__SUNPRO_CC > 0x5150) # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your compiler - please check for an updated Boost release." From b04ae6d7ab57801642c07fae865767dd3f7297cb Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Fri, 18 Aug 2017 13:30:07 +0200 Subject: [PATCH 149/261] MSVC: 14.11 supports structured bindings in C++17 mode --- include/boost/config/compiler/visualc.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index c1cddf04..0bae0023 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -196,6 +196,12 @@ # 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 +#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 @@ -220,7 +226,6 @@ // C++ 14: # define BOOST_NO_CXX14_CONSTEXPR // C++ 17: -#define BOOST_NO_CXX17_STRUCTURED_BINDINGS #define BOOST_NO_CXX17_INLINE_VARIABLES #define BOOST_NO_CXX17_FOLD_EXPRESSIONS From 19429a2bde9035eb5f8436d16be4de2f2d8213e3 Mon Sep 17 00:00:00 2001 From: Arkady Shapkin Date: Fri, 18 Aug 2017 16:19:11 +0300 Subject: [PATCH 150/261] Print _MSVC_LANG for MSVC complier --- test/config_info.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 65b7a875..178d6fb0 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -153,6 +153,7 @@ void print_compiler_macros() PRINT_MACRO(_MSC_EXTENSIONS); PRINT_MACRO(_MSC_VER); PRINT_MACRO(_MSC_FULL_VER); + PRINT_MACRO(_MSVC_LANG); PRINT_MACRO(_MT); PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED); // GNUC options: From 593389dc4b4dae14e6d38bb1c81b7bf70ec21f26 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 18 Aug 2017 18:13:38 +0100 Subject: [PATCH 151/261] Update nvcc.hpp --- include/boost/config/compiler/nvcc.hpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 907eade9..f21b9b54 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -12,12 +12,10 @@ #endif #if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__) -# define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 10000 + __CUDACC_VER_MINOR__ * 100 + __CUDACC_VER_BUILD__ -#elif defined(__CUDACC_VER__) - define BOOST_CUDA_VERSION __CUDACC_VER__ +# 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 70000 +# define BOOST_CUDA_VERSION 7000000 #endif // NVIDIA Specific support @@ -28,11 +26,11 @@ // 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 BOOST_CUDA_VERSION < 70500 +#if BOOST_CUDA_VERSION < 7050000 # define BOOST_NO_CXX11_VARIADIC_TEMPLATES #endif // The same bug is back again in 8.0: -#if (BOOST_CUDA_VERSION > 80000) && (BOOST_CUDA_VERSION < 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: @@ -52,7 +50,7 @@ // And this one effects the NVCC front end, // See https://svn.boost.org/trac/boost/ticket/13049 // -#if (BOOST_CUDA_VERSION >= 80000) && (BOOST_CUDA_VERSION < 80100) +#if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000) # define BOOST_NO_CXX11_NOEXCEPT #endif From 6102d18867f7b557e816535930c133e8c5c4821a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 1 Sep 2017 18:33:35 +0100 Subject: [PATCH 152/261] VC2017.3: don't test for wcscpy as VC2017.3 rejects it as "unsafe". --- test/boost_no_cwchar.ipp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } From 918c5fc486311b571c4aecaa16b9305ce5efe2d9 Mon Sep 17 00:00:00 2001 From: Brian Kuhl Date: Sat, 2 Sep 2017 06:21:57 -0400 Subject: [PATCH 153/261] Update vxworks.hpp for VxWorks 7 --- include/boost/config/platform/vxworks.hpp | 212 +++++++++++---------- include/boost/config/stdlib/dinkumware.hpp | 3 +- include/boost/config/stdlib/libstdcpp3.hpp | 2 + 3 files changed, 120 insertions(+), 97 deletions(-) diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index a7f571c4..27712a16 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -1,30 +1,29 @@ // (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. +// +// // ==================================================================== // // Some important information regarding the usage of POSIX semaphores: @@ -38,29 +37,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 +65,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 +123,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 @@ -191,14 +151,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 +161,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 +185,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 +206,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,14 +231,20 @@ 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; @@ -297,8 +261,18 @@ inline int gettimeofday(struct timeval *tv, void * /*tzv*/) { } #endif +#ifdef __cplusplus +} // extern "C" +#endif -// vxWorks does provide neither struct tms nor function times()! +/* + * 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 +289,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,8 +302,16 @@ inline clock_t times(struct tms *t){ return ticks; } -extern void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h -} // extern "C" + +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 { @@ -339,9 +322,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 @@ -349,12 +334,13 @@ namespace std { // Include signal.h which might contain a typo to be corrected here #include - -inline int getpagesize() { return sysconf(_SC_PAGESIZE); } // getpagesize is deprecated anyway! +#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 -inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks! #ifndef FPE_FLTINV # define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy #endif @@ -371,22 +357,56 @@ typedef int locale_t; // locale_t is a POSIX-ex // vxWorks 7 adds C++11 support // however it is optional, and does not match exactly the support determined -// by examining Dinkum STL version and GCC version (or ICC and DCC) - +// 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_ALLOCATOR -# define BOOST_NO_CXX11_SMART_PTR -# define BOOST_NO_CXX11_STD_ALIGN -# define BOOST_NO_CXX11_HDR_UNORDERED_SET -# define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_HDR_UNORDERED_MAP -# define BOOST_NO_CXX11_HDR_FUNCTIONAL -# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_HDR_UNORDERED_SET #else -# define BOOST_NO_CXX11_NULLPTR +#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/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 0af104d0..0fd97a41 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__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \ + && !defined(__VXWORKS__) # define BOOST_NO_STD_TYPEINFO #endif diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 6cd420a6..e99fe316 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: From 8f1f13d0f2f8289b07735c79ff5787d831d4c9d8 Mon Sep 17 00:00:00 2001 From: Brian Kuhl Date: Sat, 2 Sep 2017 06:26:39 -0400 Subject: [PATCH 154/261] Disable tests for VxWorks that use no-rtti While it's possible to re-build VxWorks libraries with this option, there isn't a separate link path, so there's no way to test in the same pass as normal libraries --- test/Jamfile.v2 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 29d52e4d..09422bfc 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -69,6 +69,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 ] @@ -77,7 +78,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 ] @@ -88,6 +91,7 @@ test-suite config shared BOOST_DYN_LINK=1 BOOST_CONFIG_NO_LIB=1 + vxworks:shared : config_link_test ] From 2356a7e9c45b69112f1a225b3b08e89144765173 Mon Sep 17 00:00:00 2001 From: Brian Kuhl Date: Sat, 2 Sep 2017 06:38:18 -0400 Subject: [PATCH 155/261] Additional feature disabling defines for Diab compiler --- include/boost/config/compiler/diab.hpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/diab.hpp b/include/boost/config/compiler/diab.hpp index 0de72d06..943db83f 100644 --- a/include/boost/config/compiler/diab.hpp +++ b/include/boost/config/compiler/diab.hpp @@ -12,8 +12,15 @@ #include "boost/config/compiler/common_edg.hpp" -#define BOOST_HAS_LONG_LONG #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__) From 0cdf4a5da8f2569061721abfeb3a43456cb060dc Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 4 Sep 2017 08:34:00 +0100 Subject: [PATCH 156/261] config_build_check.cpp: add workarounds from config.hpp for clang build. --- test/config_build_check.cpp | 2 ++ 1 file changed, 2 insertions(+) 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" From 421866a4b26902f6514807dad42b6853b2235939 Mon Sep 17 00:00:00 2001 From: Brian Kuhl Date: Tue, 5 Sep 2017 22:01:13 -0400 Subject: [PATCH 157/261] Update vxworks.hpp Add additional configuration guidence --- include/boost/config/platform/vxworks.hpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 27712a16..a91e4ab4 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -22,7 +22,28 @@ // 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 // // ==================================================================== // From f4d91c7aa203887e464219fa692b9bd29c70d743 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Sat, 7 Oct 2017 09:47:41 -0400 Subject: [PATCH 158/261] A number of places use BOOST_GCC_VERSION rather than just BOOST_GCC when testing workarounds so we need to define BOOST_GCC_VERSION_WORKAROUND_GUARD also. --- include/boost/config/workaround.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/workaround.hpp b/include/boost/config/workaround.hpp index 0ce8108c..fca8f3ab 100644 --- a/include/boost/config/workaround.hpp +++ b/include/boost/config/workaround.hpp @@ -87,8 +87,10 @@ #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 From 8a6d83ce29cc753b10bc3c49f4d314bf56a6a7be Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 29 Oct 2017 17:13:34 +0000 Subject: [PATCH 159/261] Travis: simplify travis.yml to reduce testing load. --- .travis.yml | 310 ++++------------------------------------------------ 1 file changed, 24 insertions(+), 286 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8619b2a9..548f4af9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,10 +28,10 @@ matrix: include: - os: linux - env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++ CXXSTD=03 - os: linux - env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 addons: apt: packages: @@ -40,16 +40,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11 - addons: - apt: - packages: - - g++-4.7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11 addons: apt: packages: @@ -58,16 +49,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11 - addons: - apt: - packages: - - g++-4.8 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11 addons: apt: packages: @@ -76,16 +58,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11 - addons: - apt: - packages: - - g++-4.9 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14 addons: apt: packages: @@ -94,25 +67,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11 - addons: - apt: - packages: - - g++-5 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14 - addons: - apt: - packages: - - g++-5 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03 + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z addons: apt: packages: @@ -121,7 +76,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11 + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu addons: apt: packages: @@ -130,67 +85,10 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14 - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11 - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++03 - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++11 - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++14 - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++1z - addons: - apt: - packages: - - g++-6 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 - - - os: linux - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++03 + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11 addons: apt: packages: @@ -200,17 +98,7 @@ matrix: - llvm-toolchain-precise-3.5 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++11 - 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=c++03 + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11 addons: apt: packages: @@ -220,17 +108,7 @@ matrix: - llvm-toolchain-precise-3.6 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11 - 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=c++03 + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11 addons: apt: packages: @@ -240,17 +118,7 @@ matrix: - llvm-toolchain-precise-3.7 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11 - 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=c++03 + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z addons: apt: packages: @@ -260,67 +128,7 @@ matrix: - llvm-toolchain-precise-3.8 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11 - addons: - apt: - packages: - - clang-3.8 - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14 - addons: - apt: - packages: - - clang-3.8 - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++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=c++03 - addons: - apt: - packages: - - clang-3.9 - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.9 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++11 - addons: - apt: - packages: - - clang-3.9 - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.9 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++14 - addons: - apt: - packages: - - clang-3.9 - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.9 - - - os: linux - env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++1z + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z addons: apt: packages: @@ -330,99 +138,27 @@ matrix: - llvm-toolchain-precise-3.9 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode8.3 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode8.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode8.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z - osx_image: xcode8.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode8.2 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode8.2 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode8.2 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode8.1 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 - osx_image: xcode8.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode8.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode8.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z - osx_image: xcode8.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode8.0 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode8.0 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode8.0 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z - osx_image: xcode8.0 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode7.3 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode7.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode7.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z - osx_image: xcode7.3 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 - osx_image: xcode6.4 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 - osx_image: xcode6.4 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 - osx_image: xcode6.4 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z osx_image: xcode6.4 install: @@ -440,9 +176,11 @@ install: script: - |- - echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - - (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET && ./config_info_travis) - - ./b2 -j3 libs/config/test toolset=$TOOLSET + 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: From 6e8df4186f2cf75ef6c83dcb15e5f7b245096cc4 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 6 Nov 2017 23:40:06 +0200 Subject: [PATCH 160/261] Print SD-6 macros and a few more VC STL ones --- test/config_info.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 89f6b07b..60992cee 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -585,6 +585,13 @@ void print_stdlib_macros() 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); // Libc++: PRINT_MACRO(_LIBCPP_VERSION); // STLPort and generic SGI STL options: @@ -1159,6 +1166,65 @@ void print_boost_macros() 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() { std::cout << @@ -1176,6 +1242,8 @@ int main() print_platform_macros(); print_separator(); print_boost_macros(); + print_separator(); + print_sd6_macros(); return 0; } From 9efa768e3096bcc8012e4b246610764dc8641908 Mon Sep 17 00:00:00 2001 From: Olaf van der Spek Date: Fri, 17 Nov 2017 11:18:48 +0100 Subject: [PATCH 161/261] Typo in visualc.hpp --- include/boost/config/compiler/visualc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index d23af835..fb8362ca 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -331,6 +331,6 @@ # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) -# pragma message("Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message.") +# 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 From 3c00cb8760646fb13e7611aa7270f7cd0a9e21c4 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sun, 3 Dec 2017 23:30:13 +0200 Subject: [PATCH 162/261] Update .travis.yml --- .travis.yml | 67 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 548f4af9..b0593be4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,16 +6,11 @@ language: cpp sudo: false -python: "2.7" - -os: - - linux - - osx - branches: only: - master - develop + - /feature\/.*/ env: matrix: @@ -58,7 +53,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14 + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z addons: apt: packages: @@ -84,11 +79,20 @@ matrix: 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=clang COMPILER=clang++ CXXSTD=03,11 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11 + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z addons: apt: packages: @@ -98,7 +102,7 @@ matrix: - llvm-toolchain-precise-3.5 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11 + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z addons: apt: packages: @@ -108,7 +112,7 @@ matrix: - llvm-toolchain-precise-3.6 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11 + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z addons: apt: packages: @@ -137,21 +141,43 @@ matrix: - 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: 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.2 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z - osx_image: xcode8.1 - - - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z - osx_image: xcode8.0 + osx_image: xcode8 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z @@ -162,8 +188,9 @@ matrix: osx_image: xcode6.4 install: + - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - cd .. - - git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + - 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 From aa6193c8393335cd427cad73de74c5c9165fc2b4 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Dec 2017 00:03:58 +0200 Subject: [PATCH 163/261] Add cxxstd=11 to default g++ on Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b0593be4..2668f56d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ matrix: include: - os: linux - env: TOOLSET=gcc COMPILER=g++ CXXSTD=03 + env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11 - os: linux env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 From 025db91843e3d8f4bf5d7d3842482a3794785576 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Dec 2017 00:55:14 +0200 Subject: [PATCH 164/261] Add BOOST_PRAGMA_MESSAGE --- doc/html/boost_config/acknowledgements.html | 2 +- .../boost_config/boost_macro_reference.html | 47 +++++++++++++++++-- doc/html/boost_config/build_config.html | 2 +- doc/html/boost_config/cstdint.html | 4 +- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 10 ++-- doc/macro_reference.qbk | 6 +++ include/boost/config/pragma_message.hpp | 24 ++++++++++ test/Jamfile.v2 | 1 + test/pragma_message_test.cpp | 18 +++++++ 11 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 include/boost/config/pragma_message.hpp create mode 100644 test/pragma_message_test.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 8281d052..e3cd5555 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 667484f9..b1266a09 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -26,7 +26,7 @@ - @@ -4183,7 +4195,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)

@@ -4452,6 +4473,8 @@

BOOST_LIKELY(X) +

+

BOOST_UNLIKELY(X)

@@ -4520,6 +4543,22 @@

+ + +

+ BOOST_PRAGMA_MESSAGE(M) +

+ + +

+ Expands to the equivalent of #pragma + message(M). + M must be a string + literal. Example: BOOST_PRAGMA_MESSAGE("This header + is deprecated."). +

+ + @@ -5884,7 +5923,7 @@
Macros for libraries with separate source code -
+ - -
- - +

Last revised: July 21, 2017 at 18:08:20 GMT

Last revised: December 03, 2017 at 22:51:50 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 94d0ca20..a3335447 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -1095,8 +1095,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. @@ -1247,6 +1250,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. @@ -1275,6 +1279,8 @@ Usage example: typedef unsigned int BOOST_MAY_ALIAS aliasing_uint; `` ]] +[[`BOOST_PRAGMA_MESSAGE(M)`][Expands to the equivalent of `#pragma message(M)`. `M` must +be a string literal. Example: `BOOST_PRAGMA_MESSAGE("This header is deprecated.")`.]] ] [endsect] diff --git a/include/boost/config/pragma_message.hpp b/include/boost/config/pragma_message.hpp new file mode 100644 index 00000000..a6292fd0 --- /dev/null +++ b/include/boost/config/pragma_message.hpp @@ -0,0 +1,24 @@ +#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") + +#if defined(__GNUC__) +#define BOOST_PRAGMA_MESSAGE_IMPL_1(x) _Pragma(#x) +#define BOOST_PRAGMA_MESSAGE(x) BOOST_PRAGMA_MESSAGE_IMPL_1(message(x)) +#elif defined(_MSC_VER) +#define BOOST_PRAGMA_MESSAGE_IMPL_2(x, f, ln) __pragma(message(f "(" #ln "): note: " x)) +#define BOOST_PRAGMA_MESSAGE_IMPL_1(x, f, ln) BOOST_PRAGMA_MESSAGE_IMPL_2(x, f, ln) +#define BOOST_PRAGMA_MESSAGE(x) BOOST_PRAGMA_MESSAGE_IMPL_1(x, __FILE__, __LINE__) +#else +#define BOOST_PRAGMA_MESSAGE(x) +#endif + +#endif // BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 09422bfc..16147352 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -103,6 +103,7 @@ 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 ] ] + [ compile pragma_message_test.cpp ] ; obj has_clang_implicit_fallthrough : cmd_line_check.cpp : 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)) From 77c6a915db37fea17816be665534984c7338e98a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Dec 2017 01:24:39 +0200 Subject: [PATCH 165/261] Document BOOST_PRAGMA_MESSAGE header; fix mentions of detail/workaround.hpp --- doc/html/boost_config/boost_macro_reference.html | 7 ++++--- doc/html/index.html | 2 +- doc/macro_reference.qbk | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index b1266a09..ffa9fd1d 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3968,7 +3968,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: @@ -3999,7 +3999,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.

@@ -4551,7 +4551,8 @@

- Expands to the equivalent of #pragma + 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 diff --git a/doc/html/index.html b/doc/html/index.html index 12c33f3d..d75d10cc 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -992,7 +992,7 @@ - +

Last revised: December 03, 2017 at 22:51:50 GMT

Last revised: December 03, 2017 at 23:12:48 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index a3335447..3d4a1ce7 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -979,7 +979,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: `` @@ -1001,7 +1001,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" @@ -1279,8 +1279,9 @@ Usage example: typedef unsigned int BOOST_MAY_ALIAS aliasing_uint; `` ]] -[[`BOOST_PRAGMA_MESSAGE(M)`][Expands to the equivalent of `#pragma message(M)`. `M` must -be a string literal. Example: `BOOST_PRAGMA_MESSAGE("This header is deprecated.")`.]] +[[`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.")`.]] ] [endsect] From 08bd1dbe71f1067c43804455f207a74f1c34740a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Dec 2017 18:05:05 +0200 Subject: [PATCH 166/261] Move BOOST_STRINGIZE, BOOST_JOIN to config/helper_macros.hpp; use BOOST_STRINGIZE in BOOST_PRAGMA_MESSAGE --- include/boost/config/detail/suffix.hpp | 19 ++----------- include/boost/config/helper_macros.hpp | 37 +++++++++++++++++++++++++ include/boost/config/pragma_message.hpp | 13 +++++---- test/Jamfile.v2 | 1 + test/helper_macros_test.cpp | 30 ++++++++++++++++++++ 5 files changed, 78 insertions(+), 22 deletions(-) create mode 100644 include/boost/config/helper_macros.hpp create mode 100644 test/helper_macros_test.cpp diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index caa0b229..4aeac4c7 100644 --- a/include/boost/config/detail/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. 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/pragma_message.hpp b/include/boost/config/pragma_message.hpp index a6292fd0..448ccc0f 100644 --- a/include/boost/config/pragma_message.hpp +++ b/include/boost/config/pragma_message.hpp @@ -9,14 +9,17 @@ // 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(__GNUC__) -#define BOOST_PRAGMA_MESSAGE_IMPL_1(x) _Pragma(#x) -#define BOOST_PRAGMA_MESSAGE(x) BOOST_PRAGMA_MESSAGE_IMPL_1(message(x)) +#define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x))) #elif defined(_MSC_VER) -#define BOOST_PRAGMA_MESSAGE_IMPL_2(x, f, ln) __pragma(message(f "(" #ln "): note: " x)) -#define BOOST_PRAGMA_MESSAGE_IMPL_1(x, f, ln) BOOST_PRAGMA_MESSAGE_IMPL_2(x, f, ln) -#define BOOST_PRAGMA_MESSAGE(x) BOOST_PRAGMA_MESSAGE_IMPL_1(x, __FILE__, __LINE__) +#define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x)) #else #define BOOST_PRAGMA_MESSAGE(x) #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 16147352..9f1e4ea4 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -103,6 +103,7 @@ 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 ] ; 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(); +} From 23327d6d0169c73ace8f7b91a40f03f4de4839fa Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 4 Dec 2017 19:15:36 +0200 Subject: [PATCH 167/261] Suppress BOOST_PRAGMA_MESSAGE messages when BOOST_DISABLE_PRAGMA_MESSAGE is defined --- include/boost/config/pragma_message.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/boost/config/pragma_message.hpp b/include/boost/config/pragma_message.hpp index 448ccc0f..d213f63c 100644 --- a/include/boost/config/pragma_message.hpp +++ b/include/boost/config/pragma_message.hpp @@ -16,12 +16,14 @@ #include -#if defined(__GNUC__) -#define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x))) +#if defined(BOOST_DISABLE_PRAGMA_MESSAGE) +# define BOOST_PRAGMA_MESSAGE(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)) +# define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x)) #else -#define BOOST_PRAGMA_MESSAGE(x) +# define BOOST_PRAGMA_MESSAGE(x) #endif #endif // BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED From ac0cc94982bb81e42fe56a82ae551a6ad8cd4670 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 8 Dec 2017 20:01:39 +0000 Subject: [PATCH 168/261] Config.MSVC-15.5: BOOST_NO_CXX11_SFINAE_EXPR no longer required in C++14 or later mode. --- include/boost/config/compiler/visualc.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index d23af835..49bb1a48 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -222,7 +222,9 @@ // C++ 11: // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#if (_MSC_VER < 1912) || (_MSVC_LANG < 201402) #define BOOST_NO_CXX11_SFINAE_EXPR +#endif // C++ 14: # define BOOST_NO_CXX14_CONSTEXPR // C++ 17: From 305f5a58ef879037b0fd9fdaa8e05615c1f4b7f1 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 9 Dec 2017 12:42:47 +0000 Subject: [PATCH 169/261] Config.msvc-15.5: Fix tests that can't pass in C++17. --- test/boost_has_part_alloc.ipp | 6 +++-- test/boost_no_cxx11_hdr_type_traits.ipp | 5 ++++- test/boost_no_cxx17_iterator_traits.ipp | 8 +++++-- test/boost_no_std_allocator.ipp | 29 ++++++++++++++++--------- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/test/boost_has_part_alloc.ipp b/test/boost_has_part_alloc.ipp index fb4bf516..3e4c2cb8 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; +#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_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_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp index ea75f232..5d0ee079 100644 --- a/test/boost_no_cxx17_iterator_traits.ipp +++ b/test/boost_no_cxx17_iterator_traits.ipp @@ -13,9 +13,13 @@ namespace boost_no_cxx17_iterator_traits { -struct iterator : - public std::iterator< std::random_access_iterator_tag, char > +struct iterator { + typedef std::random_access_iterator_tag iterator_category; + typedef char value_type; + typedef std::ptrdiff_t distance; + typedef char* pointer; + typedef char& reference; }; struct non_iterator {}; diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp index d3badbd5..80e048e4 100644 --- a/test/boost_no_std_allocator.ipp +++ b/test/boost_no_std_allocator.ipp @@ -28,20 +28,33 @@ 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); +#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 +65,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; } From e376809717dc6e08eb572343f858b549e0623425 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 9 Dec 2017 12:44:38 +0000 Subject: [PATCH 170/261] Config.msvc-15.5: enable some initial C++17 features. --- include/boost/config/compiler/visualc.hpp | 4 ++++ include/boost/config/stdlib/dinkumware.hpp | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 49bb1a48..40adff94 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -223,12 +223,16 @@ // #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 // 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 +#endif #define BOOST_NO_CXX17_FOLD_EXPRESSIONS // diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 0fd97a41..641c2ae2 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -173,10 +173,15 @@ // 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) # define BOOST_NO_CXX17_STD_INVOKE -# define BOOST_NO_CXX17_ITERATOR_TRAITS +#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) From 280ebb91290195902182f05af26344aa76b17846 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 9 Dec 2017 17:45:26 +0000 Subject: [PATCH 171/261] Config.msvc-15.5: Fix test case for BOOST_NO_CXX17_ITERATOR_TRAITS. --- test/boost_no_cxx17_iterator_traits.ipp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/boost_no_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp index 5d0ee079..cef88c05 100644 --- a/test/boost_no_cxx17_iterator_traits.ipp +++ b/test/boost_no_cxx17_iterator_traits.ipp @@ -17,9 +17,12 @@ struct iterator { typedef std::random_access_iterator_tag iterator_category; typedef char value_type; - typedef std::ptrdiff_t distance; + typedef std::ptrdiff_t difference_type; typedef char* pointer; typedef char& reference; + + reference operator*()const; + iterator operator++(); }; struct non_iterator {}; @@ -41,11 +44,9 @@ struct has_iterator_category< Traits, typename void_type< typename Traits::itera int test() { - if (!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value) - return 1; + static_assert(has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value, "has_iterator_category failed"); - if (has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value) - return 2; + static_assert(!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value, "has_iterator_category negative check failed"); return 0; } From 44e0d3ec75b8165658ad37f78e86aef89938b1b4 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 9 Dec 2017 18:02:33 +0000 Subject: [PATCH 172/261] Config.MSVC-14.5: complete configuration of new compiler features. --- include/boost/config/compiler/visualc.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 40adff94..f6b7ffae 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -217,11 +217,16 @@ // 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 +#if (_MSC_VER < 1912) + // This is really only supported with /permissive- but as this is the default for new projects it seems + // sensible to allow this: +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif #if (_MSC_VER < 1912) || (_MSVC_LANG < 201402) // Supported from msvc-15.5 onwards: #define BOOST_NO_CXX11_SFINAE_EXPR @@ -232,8 +237,8 @@ // C++ 17: #if (_MSC_VER < 1912) || (_MSVC_LANG < 201703) #define BOOST_NO_CXX17_INLINE_VARIABLES -#endif #define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#endif // // Things that don't work in clr mode: From 464f30fe36734b4c8be02767fbc8e1631742333c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 9 Dec 2017 18:08:39 +0000 Subject: [PATCH 173/261] Config.MSVC-14.5: complete changes required, update appveyor.yml to test /permissive-. --- appveyor.yml | 2 +- include/boost/config/compiler/visualc.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 190d6fa9..c41150ee 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,7 +21,7 @@ environment: - 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 + 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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index f6b7ffae..8cbc20fb 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -338,7 +338,7 @@ // // last known and checked version is 19.11.25506 (VC++ 2017.3): -#if (_MSC_VER > 1911) +#if (_MSC_VER > 1912) # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) From 1f86d5103085bb6c69f6c01296808a153c189f4b Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 11 Dec 2017 19:27:07 +0000 Subject: [PATCH 174/261] Config.MSVC-15.5: We still need to define BOOST_NO_TWO_PHASE_NAME_LOOKUP as we can't tell if /permissive- is in effect or not. --- include/boost/config/compiler/visualc.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 8cbc20fb..05a39df6 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -222,11 +222,12 @@ // // C++ 11: // -#if (_MSC_VER < 1912) - // This is really only supported with /permissive- but as this is the default for new projects it seems - // sensible to allow this: +// 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: +// # define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#endif + #if (_MSC_VER < 1912) || (_MSVC_LANG < 201402) // Supported from msvc-15.5 onwards: #define BOOST_NO_CXX11_SFINAE_EXPR From f060bb1eca52d77cad5da30bb66c48f6bb0ba40b Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 11 Dec 2017 19:27:43 +0000 Subject: [PATCH 175/261] Config.MSVC-15.5: Update list of predefined macros printed in config_info.cpp. --- test/config_info.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 89f6b07b..f9b16692 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -143,19 +143,49 @@ void print_compiler_macros() PRINT_MACRO(_WCHAR_T_DEFINED); #endif // MSVC macros: + 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(_ISO_VOLATIL); + 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_RUNTIME_CHECKS); PRINT_MACRO(_MT); PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED); + PRINT_MACRO(_OPENMP); + PRINT_MACRO(_PREFAST_); // GNUC options: PRINT_MACRO(__GNUC__); PRINT_MACRO(__GNUC_MINOR__); From 90466c9d324fb325b423ec5d9544c54d188f7885 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 11 Dec 2017 19:31:31 +0000 Subject: [PATCH 176/261] Config.MSVC-15.5: Document changes to meaning of BOOST_NO_STD_ITERATOR. --- doc/macro_reference.qbk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 94d0ca20..1f82b6fd 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -232,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 From baeb8cd5501db64c2b6c2714fc35d639abe44a4d Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 11 Dec 2017 19:32:29 +0000 Subject: [PATCH 177/261] Config.MSVC-15.5: Update docs. --- doc/html/boost_config/boost_macro_reference.html | 15 ++++++++++++++- doc/html/index.html | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 667484f9..b425d6eb 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -939,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.

@@ -3829,6 +3830,18 @@

+ + +

+ BOOST_NO_CXX17_ITERATOR_TRAITS +

+ + +

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

+ + diff --git a/doc/html/index.html b/doc/html/index.html index 109e2013..397e2da3 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -992,7 +992,7 @@ - +

Last revised: July 21, 2017 at 18:08:20 GMT

Last revised: December 11, 2017 at 19:32:07 GMT


From 884133ef7f4221a61f7c4069afc4b7b1910175df Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 11 Dec 2017 20:02:32 +0000 Subject: [PATCH 178/261] Config.MSVC-15.5: Fix macro spelling. --- test/config_info.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/config_info.cpp b/test/config_info.cpp index f9b16692..f30d1533 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -154,7 +154,7 @@ void print_compiler_macros() PRINT_MACRO(_CPPRTTI); PRINT_MACRO(_CPPUNWIND); PRINT_MACRO(_DLL); - PRINT_MACRO(_ISO_VOLATIL); + PRINT_MACRO(_ISO_VOLATILE); PRINT_MACRO(_M_AMD64); PRINT_MACRO(_M_ARM); PRINT_MACRO(_M_ARM_ARMV7VE); From 4ba6b9d54540bcf7fb58871175e4260f782bb09c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 12 Dec 2017 18:20:27 +0000 Subject: [PATCH 179/261] Config: Add file and line number info to visualc.hpp #pragma message. --- include/boost/config/compiler/visualc.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 6f6e7f24..0d064c8a 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -337,12 +337,14 @@ # define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) #endif +#include + // // last known and checked version is 19.11.25506 (VC++ 2017.3): #if (_MSC_VER > 1912) # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) -# 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.") + 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 From f6296c049516c065df895f28eef442bdced4e8c1 Mon Sep 17 00:00:00 2001 From: bitsrules <33675621+bitsrules@users.noreply.github.com> Date: Wed, 13 Dec 2017 14:58:09 +0900 Subject: [PATCH 180/261] Update to newest Visual Studio 2017 --- include/boost/config/compiler/visualc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 0d064c8a..8b40c45b 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -340,7 +340,7 @@ #include // -// last known and checked version is 19.11.25506 (VC++ 2017.3): +// last known and checked version is 19.12.25830.2 (VC++ 2017.3): #if (_MSC_VER > 1912) # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." From d5986d697ca534e18d192bd28b8c1177fe220157 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 15 Dec 2017 19:25:13 +0200 Subject: [PATCH 181/261] Print more MS macros, taken from VS2017 15.5 yvals.h --- test/config_info.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 7f8c2dcb..c548e771 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -143,6 +143,7 @@ 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__); @@ -154,6 +155,7 @@ void print_compiler_macros() 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); @@ -181,9 +183,11 @@ void print_compiler_macros() 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: @@ -611,6 +615,8 @@ 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); @@ -622,6 +628,20 @@ void print_stdlib_macros() 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: From d70e6fcc85dac30c7f31d7f6cb2f75a48619a908 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sun, 17 Dec 2017 03:15:08 +0200 Subject: [PATCH 182/261] Print a few more g++/libstdc++ macros, notably _GLIBCXX_RELEASE --- test/config_info.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 7f8c2dcb..d907a0a1 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -801,6 +801,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); @@ -1183,6 +1184,8 @@ void print_boost_macros() 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); From a28e9c6c1c42068557e6fcb4eebdf6422090d120 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 18 Dec 2017 17:04:53 +0000 Subject: [PATCH 183/261] Bump to 1.67.0 --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index d8f2132a..e96f3432 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 106600 +#define BOOST_VERSION 106700 // // 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_66" +#define BOOST_LIB_VERSION "1_67" #endif From da9f4d062b9b9edc775279388f6bbe02dbf66265 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 23 Dec 2017 01:52:52 +0200 Subject: [PATCH 184/261] Add BOOST_HEADER_DEPRECATED --- doc/html/boost_config/acknowledgements.html | 2 +- .../boost_config/boost_macro_reference.html | 41 ++++++++++++++++--- doc/html/boost_config/build_config.html | 2 +- doc/html/boost_config/cstdint.html | 4 +- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 10 ++--- doc/macro_reference.qbk | 16 +++++++- include/boost/config/header_deprecated.hpp | 26 ++++++++++++ test/Jamfile.v2 | 1 + test/header_deprecated_test.cpp | 18 ++++++++ 11 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 include/boost/config/header_deprecated.hpp create mode 100644 test/header_deprecated_test.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 8281d052..e3cd5555 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index bc8efb2d..caa4e5c9 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -26,7 +26,7 @@ - -
+ - -
- - +

Last revised: December 12, 2017 at 18:14:39 GMT

Last revised: December 22, 2017 at 23:49:22 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index e89f6555..9426531f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -1282,7 +1282,21 @@ Usage example: ]] [[`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.")`.]] +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/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/test/Jamfile.v2 b/test/Jamfile.v2 index 9f1e4ea4..ee6ecadb 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -105,6 +105,7 @@ test-suite config [ 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 : 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)) From 3ec5a2b573e8ea8175d786e1c10f91773d1fb473 Mon Sep 17 00:00:00 2001 From: akrzemi1 Date: Thu, 4 Jan 2018 00:58:32 +0100 Subject: [PATCH 185/261] Added macro BOOST_NO_CXX11_DEFAULTED_MOVES --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 ++++- doc/macro_reference.qbk | 3 ++ include/boost/config/compiler/borland.hpp | 1 + include/boost/config/compiler/gcc.hpp | 1 + include/boost/config/compiler/visualc.hpp | 1 + include/boost/config/detail/suffix.hpp | 5 +++ test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx11_defaulted_moves.ipp | 25 +++++++++++++++ test/config_info.cpp | 2 ++ test/config_test.cpp | 12 +++++++- test/no_cxx11_defaulted_moves_fail.cpp | 37 +++++++++++++++++++++++ test/no_cxx11_defaulted_moves_pass.cpp | 37 +++++++++++++++++++++++ 13 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx11_defaulted_moves.ipp create mode 100644 test/no_cxx11_defaulted_moves_fail.cpp create mode 100644 test/no_cxx11_defaulted_moves_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 77b7e9d2..8ecfd756 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun Jul 9 16:30:35 2017 +# This file was automatically generated on Wed Jan 03 23:31:31 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -67,6 +67,7 @@ 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 05f921f1..13df0b90 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Jul 9 16:30:35 2017 +// This file was automatically generated on Wed Jan 03 23:31:31 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -291,6 +291,11 @@ # 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 # ifdef BOOST_NO_CXX11_FINAL # error "Defect macro BOOST_NO_CXX11_FINAL is defined." diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index e89f6555..25130914 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -625,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()`). ]] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index fa891def..6190e390 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 diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index c67ab818..b0e3a5ec 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -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 diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 8b40c45b..748d1407 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -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 diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 4aeac4c7..137046fb 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -687,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 dafaulted 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/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index d8e1636d..8b1f8c16 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Sun Jul 9 16:30:35 2017 +# This file was automatically generated on Wed Jan 03 23:31:31 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -190,6 +190,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 ] ; diff --git a/test/boost_no_cxx11_defaulted_moves.ipp b/test/boost_no_cxx11_defaulted_moves.ipp new file mode 100644 index 00000000..1e7fd941 --- /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/assignmet unavailable +// DESCRIPTION: The compiler does not support C++0x defaulting of move constructor/assignmet + +namespace boost_no_cxx11_defaulted_moves { + + struct foo { + foo(foo&&) = default; + foo& operator=(foo&&) = default; + }; + + int test() + { + return 0; + } + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 520aa8bc..363e1e95 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1068,6 +1068,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); @@ -1200,6 +1201,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VOID_RETURNS); + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 446fa891..0b3f9a12 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Jul 9 16:30:35 2017 +// This file was automatically generated on Wed Jan 03 23:31:31 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 @@ -1261,6 +1266,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; 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(); +} + From 95fe1c03ac17f1e34a9309c0abc2d9c2b017f38d Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 10 Jan 2018 15:27:31 +0000 Subject: [PATCH 186/261] Update deprecated macros --- include/boost/cxx11_char_types.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 0d0211e4d5d97236be4e04145b2d8d9be1920046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Krzemie=C5=84ski?= Date: Thu, 11 Jan 2018 21:21:20 +0100 Subject: [PATCH 187/261] comment typeo fix --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 137046fb..22d31f68 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -687,7 +687,7 @@ 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 dafaulted functions +// 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 From cb2b706bf29a248ae7fb67732d3ee4e5da1815e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Krzemie=C5=84ski?= Date: Thu, 11 Jan 2018 21:22:59 +0100 Subject: [PATCH 188/261] comment/whitespace fixes --- test/boost_no_cxx11_defaulted_moves.ipp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/boost_no_cxx11_defaulted_moves.ipp b/test/boost_no_cxx11_defaulted_moves.ipp index 1e7fd941..9bf27633 100644 --- a/test/boost_no_cxx11_defaulted_moves.ipp +++ b/test/boost_no_cxx11_defaulted_moves.ipp @@ -7,14 +7,14 @@ // See http://www.boost.org/libs/config for more information. // MACRO: BOOST_NO_CXX11_DEFAULTED_MOVES -// TITLE: C++0x defaulting of move constructor/assignmet unavailable -// DESCRIPTION: The compiler does not support C++0x defaulting of move constructor/assignmet +// 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; + foo& operator=(foo&&) = default; }; int test() From 0ac815ed2158a9fc9c44c815af717b01c6ea72a7 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 16 Jan 2018 19:01:36 +0200 Subject: [PATCH 189/261] Add clang++-libc++, g++ 4.4, g++ 4.6 to Travis --- .travis.yml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2668f56d..0bb59050 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -# Copyright 2016, 2017 Peter Dimov +# 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) @@ -25,6 +25,26 @@ matrix: - 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: @@ -163,6 +183,14 @@ matrix: - 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 From 3143e185c600553da8b9312c49449d36f4e34b5c Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 17 Jan 2018 19:27:38 +0200 Subject: [PATCH 190/261] Disable config_test_no_rtti on g++ 4.4 -std=c++0x --- test/Jamfile.v2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9f1e4ea4..efde04f0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -59,6 +59,7 @@ test-suite config : #input-files : #requirements off + gcc-4.4,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 ] From 2617671fd26dbfa13c059e2df18b658cb289c2e8 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 18 Jan 2018 00:47:00 +0200 Subject: [PATCH 191/261] Use full g++ 4.4 version (4.4.7) --- test/Jamfile.v2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index efde04f0..faddf7d2 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -59,7 +59,7 @@ test-suite config : #input-files : #requirements off - gcc-4.4,0x:no # does not compile with -fno-rtti + 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 ] From 9d3cef6dba2a199ba45f579d9c84c298e85c327c Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 18 Jan 2018 21:45:06 +0200 Subject: [PATCH 192/261] Define BOOST_NO_CXX11_THREAD_LOCAL for libc++ on Linux --- include/boost/config/stdlib/libcpp.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 3d3f4ae4..1e77dca3 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -113,6 +113,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 From 2ec8f0fc738be251cc8ce9a0700fbc4027f08ac9 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 19 Jan 2018 05:01:39 +0200 Subject: [PATCH 193/261] Add file/line to BOOST_PRAGMA_MESSAGE on Intel C++ --- include/boost/config/pragma_message.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/pragma_message.hpp b/include/boost/config/pragma_message.hpp index d213f63c..b2c5ff2e 100644 --- a/include/boost/config/pragma_message.hpp +++ b/include/boost/config/pragma_message.hpp @@ -18,6 +18,8 @@ #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) From d0b3e9d59e79016d3650a3a4b304121e5b80e229 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 18:37:04 +0000 Subject: [PATCH 194/261] Config: Fix up cygwin support as follows: * Define BOOST_HAS_STDINT_H in more situations. * Disable BOOST_NO_CXX14_HDR_SHARED_MUTEX in -std=c++XX mode as the std header doesn't compile (cygwin bug). * Add more tests to CI. --- appveyor.yml | 16 ++++++++++------ include/boost/config/platform/cygwin.hpp | 11 +++++++++++ include/boost/cstdint.hpp | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c41150ee..3278fd66 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,14 +30,18 @@ environment: - 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 + - 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 cxxflags=-std=gnu++1z - PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - - ARGS: --toolset=gcc address-model=32 - PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;%PATH% - - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition + - ARGS: --toolset=gcc address-model=64 cxxstd=03,11,14,1z + PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\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 .. diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 8ecc4a4a..6dd7e57c 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -38,10 +38,21 @@ #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 diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 5e1411a5..0b169132 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -60,7 +60,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 From 5ac217aa3ff37d02edb47b337d9fe99c6fe725e3 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:07:22 +0000 Subject: [PATCH 195/261] Config: correct appveyor.yml multi-config builds. --- appveyor.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 3278fd66..a11abfd9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,17 +30,23 @@ environment: - 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 + - 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 + - ARGS: --toolset=gcc address-model=64 + CXXSTD: 03,11,14,1z PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw64\bin;%PATH% - - ARGS: --toolset=gcc address-model=64 cxxstd=03,11,14,1z + - 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 + - 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 + - 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 + - ARGS: --toolset=gcc address-model=32 + CXXSTD: 03,11,14,1z PATH: C:\cygwin\bin;%PATH% install: @@ -60,6 +66,6 @@ build: off test_script: - cd libs\config\test - - ..\..\..\b2 config_info_travis_install %ARGS% + - FOR %A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%A - config_info_travis - - ..\..\..\b2 -j3 %ARGS% + - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From 81b7dfb7282e90d2274ed976cc738c0e9418de44 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:23:20 +0000 Subject: [PATCH 196/261] Appveyor: try again with FOR loop. --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index a11abfd9..59bc5d05 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,6 +66,6 @@ build: off test_script: - cd libs\config\test - - FOR %A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%A + - FOR %%A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%%A - config_info_travis - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From 8e14096bf3d26fbbafa00a4ec0e22ce21fa9dffe Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:31:25 +0000 Subject: [PATCH 197/261] appveyor: yet another try at command for loop. --- appveyor.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 59bc5d05..17a564ff 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,6 +66,8 @@ build: off test_script: - cd libs\config\test - - FOR %%A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%%A + - echo "FOR %%A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%%A" > info.bat + - type info.bat + - info.bat - config_info_travis - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From d566c119a757470710a41b5b12ed7d2b11ac59b5 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:37:10 +0000 Subject: [PATCH 198/261] Appveyor: yet another command line escaping attempt... --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 17a564ff..c7afac16 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,7 +66,7 @@ build: off test_script: - cd libs\config\test - - echo "FOR %%A in (%CXXSTD%) DO ..\..\..\b2 config_info_travis_install %ARGS% cxxstd=%%A" > info.bat + - echo "FOR ^%^%A in (^%CXXSTD^%) DO ..\..\..\b2 config_info_travis_install ^%ARGS^% cxxstd=^%^%A" > info.bat - type info.bat - info.bat - config_info_travis From bc99a449c161ca3f1446c9b11aac1e32a967e84c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:40:28 +0000 Subject: [PATCH 199/261] Appveyor: give up trying to loop through cxxstd options for now... --- appveyor.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c7afac16..03fb2edf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,8 +66,6 @@ build: off test_script: - cd libs\config\test - - echo "FOR ^%^%A in (^%CXXSTD^%) DO ..\..\..\b2 config_info_travis_install ^%ARGS^% cxxstd=^%^%A" > info.bat - - type info.bat - - info.bat + - ..\..\..\b2 config_info_travis_install %ARGS^ - config_info_travis - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From 2de7d27bfdc83b3556ec604eddb6bf3e0d7ed69d Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 28 Jan 2018 19:43:33 +0000 Subject: [PATCH 200/261] Appveyor: correct ^ typo. --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 03fb2edf..4c30127d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -66,6 +66,6 @@ build: off test_script: - cd libs\config\test - - ..\..\..\b2 config_info_travis_install %ARGS^ + - ..\..\..\b2 config_info_travis_install %ARGS% - config_info_travis - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From 29dbea1b5afb4badd9b904fbfb4fd9b84d46c3ca Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 30 Jan 2018 09:17:01 +0000 Subject: [PATCH 201/261] Appveyor: yet another attempt to print config_info for each build config. --- appveyor.bat | 6 ++++++ appveyor.yml | 6 +----- 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 appveyor.bat diff --git a/appveyor.bat b/appveyor.bat new file mode 100644 index 00000000..63196d15 --- /dev/null +++ b/appveyor.bat @@ -0,0 +1,6 @@ +IF NOT DEFINED CXXSTD (..\..\..\b2 config_info_travis_install "%ARGS%") +IF DEFINED CXXSTD FOR %%A IN (%CXXSTD%) DO ( +..\..\..\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 index 4c30127d..7d04c714 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,9 +33,6 @@ environment: - 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\i686-5.3.0-posix-dwarf-rt_v4-rev0\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% @@ -66,6 +63,5 @@ build: off test_script: - cd libs\config\test - - ..\..\..\b2 config_info_travis_install %ARGS% - - config_info_travis + - ..\appveyor.bat - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD% From 0275380f326d3cda038d05437c794ae98318ac82 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 30 Jan 2018 17:58:24 +0000 Subject: [PATCH 202/261] Appveyor: try to fix quoting in batch script. --- appveyor.bat | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/appveyor.bat b/appveyor.bat index 63196d15..fb6d5279 100644 --- a/appveyor.bat +++ b/appveyor.bat @@ -1,6 +1,12 @@ -IF NOT DEFINED CXXSTD (..\..\..\b2 config_info_travis_install "%ARGS%") +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 ( -..\..\..\b2 -a -d2 config_info_travis_install %ARGS% cxxstd=%%A +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 From db4ebfca6fdfb3364b5ff980e85e7c0818429897 Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Fri, 9 Feb 2018 07:58:30 -0500 Subject: [PATCH 203/261] Variable templates are somewhat unusable in GCC 5.1 (bug 65719) --- include/boost/config/compiler/gcc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index b0e3a5ec..8296520a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -285,7 +285,7 @@ #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 From f68542269aca04c44b16fda3177d1e1df28b16f5 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 22 Feb 2018 12:50:48 +0000 Subject: [PATCH 204/261] config_info: add more architecture specific macros. --- test/config_info.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 363e1e95..45ccfaf0 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -228,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_); From 51f11789214d784d76a0c38c5e57c8cd54dfec9c Mon Sep 17 00:00:00 2001 From: Nikita Kniazev Date: Sat, 24 Feb 2018 20:17:36 +0300 Subject: [PATCH 205/261] BOOST_STATIC_CONSTANT should use constexpr --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 22d31f68..2e5b942b 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -391,7 +391,7 @@ namespace std { # ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION # define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment } # else -# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment +# define BOOST_STATIC_CONSTANT(type, assignment) BOOST_STATIC_CONSTEXPR type assignment # endif // BOOST_USE_FACET / HAS_FACET workaround ----------------------------------// From 15d78e548f3a798f65da8dd17863405f337bbc35 Mon Sep 17 00:00:00 2001 From: Zach Laine Date: Tue, 6 Mar 2018 00:53:15 -0600 Subject: [PATCH 206/261] Add BOOST_NO_CXX17_IF_CONSTEXPR. --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 ++- include/boost/config/compiler/borland.hpp | 3 ++ include/boost/config/compiler/clang.hpp | 4 ++ include/boost/config/compiler/codegear.hpp | 4 ++ include/boost/config/compiler/common_edg.hpp | 4 ++ include/boost/config/compiler/digitalmars.hpp | 3 ++ include/boost/config/compiler/gcc.hpp | 3 ++ include/boost/config/compiler/gcc_xml.hpp | 3 ++ include/boost/config/compiler/metrowerks.hpp | 3 ++ include/boost/config/compiler/mpw.hpp | 3 ++ include/boost/config/compiler/pathscale.hpp | 3 ++ include/boost/config/compiler/sunpro_cc.hpp | 3 ++ include/boost/config/compiler/vacpp.hpp | 3 ++ include/boost/config/compiler/visualc.hpp | 1 + include/boost/config/compiler/xlcpp.hpp | 4 ++ include/boost/config/compiler/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx17_if_constexpr.ipp | 44 +++++++++++++++++++ test/config_info.cpp | 7 +++ test/config_test.cpp | 12 ++++- test/no_cxx17_if_constexpr_fail.cpp | 37 ++++++++++++++++ test/no_cxx17_if_constexpr_pass.cpp | 37 ++++++++++++++++ 23 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx17_if_constexpr.ipp create mode 100644 test/no_cxx17_if_constexpr_fail.cpp create mode 100644 test/no_cxx17_if_constexpr_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 8ecfd756..2c4d4672 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 Wed Jan 03 23:31:31 2018 +# This file was automatically generated on Tue Mar 6 17:44:35 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -111,6 +111,7 @@ obj cxx14_return_type_deduction : test_case.cpp : TEST_BOOST_NO_CXX14_RE 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 13df0b90..7c0f8a3f 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed Jan 03 23:31:31 2018 +// This file was automatically generated on Tue Mar 6 17:44:35 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -511,6 +511,11 @@ # 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." diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 6190e390..cb164f8f 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -239,6 +239,9 @@ #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 0fdf331f..a5d13b31 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -290,6 +290,10 @@ # 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 diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 44ca8428..c2cfe15c 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -167,6 +167,10 @@ # 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 d49ceb68..88aba9ac 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -149,6 +149,10 @@ # 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/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index e4c5afdd..3e9a3ab0 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -124,6 +124,9 @@ #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" diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 8296520a..e740fd39 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -299,6 +299,9 @@ #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)) diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 2b47585a..bdba4ed0 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -102,6 +102,9 @@ #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/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 99ff0f5e..4bfc01ec 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -167,6 +167,9 @@ #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 d9544345..2292ada0 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -116,6 +116,9 @@ #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: diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 94b3f91d..1318d275 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -129,4 +129,7 @@ #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/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 54ad77a3..41b7bcad 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -182,6 +182,9 @@ #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 diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index c8400a34..cabe844f 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -178,3 +178,6 @@ #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 748d1407..fc12c181 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -201,6 +201,7 @@ // #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 diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp index a4c66e40..ee7aa125 100644 --- a/include/boost/config/compiler/xlcpp.hpp +++ b/include/boost/config/compiler/xlcpp.hpp @@ -246,6 +246,10 @@ # 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 diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp index bc785b8a..eb1bf2e9 100644 --- a/include/boost/config/compiler/xlcpp_zos.hpp +++ b/include/boost/config/compiler/xlcpp_zos.hpp @@ -153,6 +153,7 @@ #define BOOST_NO_CXX17_STRUCTURED_BINDINGS #define BOOST_NO_CXX17_INLINE_VARIABLES #define BOOST_NO_CXX17_FOLD_EXPRESSIONS +#define BOOST_NO_CXX17_IF_CONSTEXPR // ------------------------------------- diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 8b1f8c16..bff9133a 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Wed Jan 03 23:31:31 2018 +# This file was automatically generated on Tue Mar 6 17:44:35 2018 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -322,6 +322,9 @@ test-suite "BOOST_NO_CXX14_VARIABLE_TEMPLATES" : 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 ] ; diff --git a/test/boost_no_cxx17_if_constexpr.ipp b/test/boost_no_cxx17_if_constexpr.ipp new file mode 100644 index 00000000..8c40e69c --- /dev/null +++ b/test/boost_no_cxx17_if_constexpr.ipp @@ -0,0 +1,44 @@ +/* +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) { + return 1; + } else if constexpr (false) { + return 1; + } else { + return 0; + } + } + } + return 1; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 45ccfaf0..15ea5d4a 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1158,6 +1158,7 @@ void print_boost_macros() 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); @@ -1228,6 +1229,12 @@ void print_boost_macros() + + + + + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 0b3f9a12..2d27e53c 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed Jan 03 23:31:31 2018 +// This file was automatically generated on Tue Mar 6 17:44:35 2018 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -342,6 +342,11 @@ namespace boost_no_cxx14_variable_templates = empty_boost; #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 @@ -1486,6 +1491,11 @@ int main( int, char *[] ) 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; diff --git a/test/no_cxx17_if_constexpr_fail.cpp b/test/no_cxx17_if_constexpr_fail.cpp new file mode 100644 index 00000000..63137ff3 --- /dev/null +++ b/test/no_cxx17_if_constexpr_fail.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 not compile, if it does then +// 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: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#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_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(); +} + From 5ad0730630188b55e2ee554dec53b5498fc0a030 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 7 Mar 2018 18:02:01 +0000 Subject: [PATCH 207/261] visualc.hpp: Disable warning about outdated config. --- include/boost/config/compiler/visualc.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 748d1407..c533c50d 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -346,6 +346,9 @@ # if defined(BOOST_ASSERT_CONFIG) # error "Boost.Config is older than your current compiler version." # elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE) - 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.") + // + // 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 From 3b709bc3edd331c114b0cce7f030441e032fa146 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sun, 11 Mar 2018 17:37:13 +0300 Subject: [PATCH 208/261] Use dllimport/dllexport with clang and gcc on Cygwin. This is required at least for Boost.WinAPI to match the declarations in Windows SDK headers, which use dllimport. Also, for clang on Windows, use dllimport/dllexport even beyond Cygwin. The compiler does support these attributes, and it should for compatibility with Windows headers. --- include/boost/config/compiler/clang.hpp | 8 ++++++-- include/boost/config/compiler/gcc.hpp | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 0fdf331f..da736bc4 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -98,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 diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 8296520a..4fe968a0 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__)) From 3cf434c002c793ec568737687613110252215686 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 11 Mar 2018 21:12:53 +0000 Subject: [PATCH 209/261] Undefine BOOST_GCC for intel compilers Otherwise it's just defined as BOOST_GCC_VERSION. --- include/boost/config/compiler/intel.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 00396b03..0eea05b9 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -45,6 +45,7 @@ #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) From dca252c0870361a0ab52b247eeaa450a26e4f5dd Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 16 Mar 2018 18:10:43 +0000 Subject: [PATCH 210/261] cstdint.hpp: Move the #pragma system_header to catch more cases. See https://github.com/boostorg/config/issues/190. --- include/boost/cstdint.hpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 0b169132..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 @@ -408,16 +419,6 @@ 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: -// -// 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 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 // From d03a3756d91418a00af06ec2b0a8fd6257b04cbb Mon Sep 17 00:00:00 2001 From: Zach Laine Date: Sat, 17 Mar 2018 13:24:51 -0500 Subject: [PATCH 211/261] Add static_asserts() to a false path in boost_no_cxx_if_constexpr.ipp as a further check of implementation correctness. --- test/boost_no_cxx17_if_constexpr.ipp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/boost_no_cxx17_if_constexpr.ipp b/test/boost_no_cxx17_if_constexpr.ipp index 8c40e69c..3392ee73 100644 --- a/test/boost_no_cxx17_if_constexpr.ipp +++ b/test/boost_no_cxx17_if_constexpr.ipp @@ -30,6 +30,7 @@ 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; From d9d5ece1c8a0c1fded2afd64e2643f791d3d4c53 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 18 Mar 2018 10:53:41 +0000 Subject: [PATCH 212/261] Revert "BOOST_STATIC_CONSTANT should use constexpr" This reverts commit 51f11789214d784d76a0c38c5e57c8cd54dfec9c. --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 2e5b942b..22d31f68 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -391,7 +391,7 @@ namespace std { # ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION # define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment } # else -# define BOOST_STATIC_CONSTANT(type, assignment) BOOST_STATIC_CONSTEXPR type assignment +# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment # endif // BOOST_USE_FACET / HAS_FACET workaround ----------------------------------// From 77a290c23717bf59aca134b35b64fdd34ec578b4 Mon Sep 17 00:00:00 2001 From: Peter Kolbus Date: Mon, 26 Mar 2018 22:19:21 -0500 Subject: [PATCH 213/261] Fix MSVC C4668 on _HAS_NAMESPACE Resolve MSVC warning C4668 (undefined preprocessor macro) for _HAS_NAMESPACE by short-circuiting (checking for Green Hills compiler first). --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 641c2ae2..e5198d4f 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -96,7 +96,7 @@ #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 From 3764d61f25862d5d85dc3ceee28e61db09970452 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 3 Apr 2018 19:08:57 +0100 Subject: [PATCH 214/261] BOOST_NO_CXX17_STD_INVOKE: Update test case to check we have std::invoke_result. MSVC has no std::invoke in C++14 mode. GCC has no std::invoke_result prior to 7.1. --- include/boost/config/stdlib/dinkumware.hpp | 2 +- include/boost/config/stdlib/libstdcpp3.hpp | 6 ++---- test/boost_no_cxx17_std_invoke.ipp | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 641c2ae2..827bed4e 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -175,7 +175,7 @@ # define BOOST_NO_CXX17_STD_APPLY # define BOOST_NO_CXX17_ITERATOR_TRAITS #endif -#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) # define BOOST_NO_CXX17_STD_INVOKE #endif diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index e99fe316..f6eab26c 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -294,12 +294,10 @@ extern "C" char *gets (char *__s); #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) -# define BOOST_NO_CXX17_STD_INVOKE -#endif #if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L) +# define BOOST_NO_CXX17_STD_INVOKE # define BOOST_NO_CXX17_STD_APPLY #endif 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; } From 4370498457a20759ee63126ad1690d02f1f6c14a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 4 Apr 2018 18:20:47 +0100 Subject: [PATCH 215/261] std::invoke is only feature complete in VC2015.3 and later. --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 827bed4e..0ccb8403 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -175,7 +175,7 @@ # 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) +#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 From 149bfe1c93d3cd2c6a586e7db55cbb00fb864300 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 4 Apr 2018 18:37:59 +0100 Subject: [PATCH 216/261] libcpp has no invoke_result. --- include/boost/config/stdlib/libcpp.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 1e77dca3..a051dbb7 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -87,9 +87,6 @@ #endif // C++17 features -#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L) -# define BOOST_NO_CXX17_STD_INVOKE -#endif #if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_APPLY #endif @@ -104,6 +101,7 @@ #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 From 745a1eb4f80cef08505392d462a8f25a47fc7c01 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 11:26:39 -0600 Subject: [PATCH 217/261] Refactoring cray.hpp - Added comments and file structure outline. - Added basic identifying information (e.g. BOOST_COMPILER). --- include/boost/config/compiler/cray.hpp | 60 ++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 5f810781..3d970928 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -1,29 +1,71 @@ // (C) Copyright John Maddock 2011. -// (C) Copyright Cray, Inc. 2013 +// (C) Copyright Cray, Inc. 2013 - 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 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). -#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) +#define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL) -#if _RELEASE_MAJOR < 8 +#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 + +/// +/// 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 -#if _RELEASE_MINOR < 5 || __cplusplus < 201100 +/// +/// Baseline values +/// + #include +#if _RELEASE_MINOR < 5 || __cplusplus < 201100 + // // #define BOOST_NO_CXX11_STATIC_ASSERT From 790a0471070a2d390dae55f6ed24feac0f784c16 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 11:54:17 -0600 Subject: [PATCH 218/261] Refactor cray.hpp logic - The effect of the logic is the same as before, but it is organized according to the outline described in the comments. The only change in the logic is that we always include 'common_edg.hpp', since we know we are only dealing with EDG based compilers. --- include/boost/config/compiler/cray.hpp | 75 ++++++++++++++++++++------ 1 file changed, 60 insertions(+), 15 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 3d970928..012341ab 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -41,9 +41,9 @@ # define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL) #endif -/// -/// Parameter validation -/// +//// +//// Parameter validation +//// // FIXME: Do we really need to support compilers before 8.5? Do they pass // the Boost.Config tests? @@ -58,16 +58,12 @@ # error "Unsupported Cray compiler, please try running the configure script." #endif -/// -/// Baseline values -/// +//// +//// Baseline values +//// #include -#if _RELEASE_MINOR < 5 || __cplusplus < 201100 - -// -// #define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS @@ -105,7 +101,6 @@ #define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_THREAD_LOCAL - //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG #define BOOST_MATH_DISABLE_STD_FPCLASSIFY //#define BOOST_HAS_FPCLASSIFY @@ -132,7 +127,57 @@ #define __ATOMIC_SEQ_CST 5 #endif -#else /* _RELEASE_MINOR */ +//// +//// Version changes +//// + +// +// 8.5.0 +// + +#if BOOST_CRAY_VERSION >= 80500 + +#if __cplusplus >= 201103 + +#undef BOOST_NO_CXX11_STATIC_ASSERT +#undef BOOST_NO_CXX11_AUTO_DECLARATIONS +#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#undef BOOST_HAS_NRVO +#undef BOOST_NO_CXX11_VARIADIC_MACROS +#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES +#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#undef BOOST_NO_CXX11_UNICODE_LITERALS +#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#undef BOOST_HAS_NRVO +#undef BOOST_NO_CXX11_TEMPLATE_ALIASES +#undef BOOST_NO_CXX11_STATIC_ASSERT +#undef BOOST_NO_SFINAE_EXPR +#undef BOOST_NO_CXX11_SFINAE_EXPR +#undef BOOST_NO_CXX11_SCOPED_ENUMS +#undef BOOST_NO_CXX11_RVALUE_REFERENCES +#undef BOOST_NO_CXX11_RANGE_BASED_FOR +#undef BOOST_NO_CXX11_RAW_LITERALS +#undef BOOST_NO_CXX11_NULLPTR +#undef BOOST_NO_CXX11_NOEXCEPT +#undef BOOST_NO_CXX11_LAMBDAS +#undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +#undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +#undef BOOST_NO_CXX11_DELETED_FUNCTIONS +#undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +#undef BOOST_NO_CXX11_DECLTYPE_N3276 +#undef BOOST_NO_CXX11_DECLTYPE +#undef BOOST_NO_CXX11_CONSTEXPR +#undef BOOST_NO_CXX11_USER_DEFINED_LITERALS +#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#undef BOOST_NO_CXX11_CHAR32_T +#undef BOOST_NO_CXX11_CHAR16_T +#undef BOOST_NO_CXX11_REF_QUALIFIERS +#undef BOOST_NO_CXX11_FINAL +#undef BOOST_NO_CXX11_THREAD_LOCAL +#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 @@ -158,9 +203,9 @@ #if __cplusplus < 201400 #define BOOST_NO_CXX11_DECLTYPE_N3276 -#endif /* __cpluspus */ - -#endif /* _RELEASE_MINOR */ +#endif // __cpluspus < 201400 +#endif // __cplusplus >= 201103 +#endif // BOOST_CRAY_VERSION >= 80500 From 9e9ba3361d583f9aa068ab923e928c4f7e932c69 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 12:01:57 -0600 Subject: [PATCH 219/261] Cosmetic refactoring - Nothing really changed, besides readability. --- include/boost/config/compiler/cray.hpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 012341ab..6d665c4e 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -108,15 +108,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 @@ -137,7 +137,7 @@ #if BOOST_CRAY_VERSION >= 80500 -#if __cplusplus >= 201103 +#if __cplusplus >= 201103L #undef BOOST_NO_CXX11_STATIC_ASSERT #undef BOOST_NO_CXX11_AUTO_DECLARATIONS @@ -201,11 +201,18 @@ #define BOOST_HAS_LONG_LONG #define BOOST_HAS_FLOAT128 -#if __cplusplus < 201400 +#if __cplusplus < 201402L #define BOOST_NO_CXX11_DECLTYPE_N3276 -#endif // __cpluspus < 201400 +#endif // __cplusplus < 201402L -#endif // __cplusplus >= 201103 +#endif // __cplusplus >= 201103L #endif // BOOST_CRAY_VERSION >= 80500 +// +// 8.6.5 +// + +#if BOOST_CRAY_VERSION >= 80605 +#endif // BOOST_CRAY_VERSION >= 80605 + From b21d168410a2052234991bfc3bf387668aac3644 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 12:09:13 -0600 Subject: [PATCH 220/261] Sort macro definitions in 'cray.hpp' - There are some duplicates. This commit does not remove the duplicates. --- include/boost/config/compiler/cray.hpp | 120 ++++++++++++------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 6d665c4e..7d80ce7d 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -64,42 +64,42 @@ #include -#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_HAS_NRVO +#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_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_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 @@ -139,42 +139,42 @@ #if __cplusplus >= 201103L -#undef BOOST_NO_CXX11_STATIC_ASSERT +#undef BOOST_HAS_NRVO +#undef BOOST_HAS_NRVO +#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION #undef BOOST_NO_CXX11_AUTO_DECLARATIONS #undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS -#undef BOOST_HAS_NRVO -#undef BOOST_NO_CXX11_VARIADIC_MACROS -#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES -#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX -#undef BOOST_NO_CXX11_UNICODE_LITERALS -#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP -#undef BOOST_HAS_NRVO -#undef BOOST_NO_CXX11_TEMPLATE_ALIASES -#undef BOOST_NO_CXX11_STATIC_ASSERT -#undef BOOST_NO_SFINAE_EXPR -#undef BOOST_NO_CXX11_SFINAE_EXPR -#undef BOOST_NO_CXX11_SCOPED_ENUMS -#undef BOOST_NO_CXX11_RVALUE_REFERENCES -#undef BOOST_NO_CXX11_RANGE_BASED_FOR -#undef BOOST_NO_CXX11_RAW_LITERALS -#undef BOOST_NO_CXX11_NULLPTR -#undef BOOST_NO_CXX11_NOEXCEPT +#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_FUNCTION_TEMPLATE_DEFAULT_ARGS -#undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS -#undef BOOST_NO_CXX11_DELETED_FUNCTIONS -#undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#undef BOOST_NO_CXX11_DECLTYPE_N3276 -#undef BOOST_NO_CXX11_DECLTYPE -#undef BOOST_NO_CXX11_CONSTEXPR -#undef BOOST_NO_CXX11_USER_DEFINED_LITERALS -#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION -#undef BOOST_NO_CXX11_CHAR32_T -#undef BOOST_NO_CXX11_CHAR16_T +#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_FINAL +#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_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 From e20aa6d1872f4221e3a9e4190cfa4fc949f22b18 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 12:10:59 -0600 Subject: [PATCH 221/261] Remove duplicate macros in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 7d80ce7d..2ceb49c9 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -64,7 +64,6 @@ #include -#define BOOST_HAS_NRVO #define BOOST_HAS_NRVO #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_NO_CXX11_AUTO_DECLARATIONS @@ -90,7 +89,6 @@ #define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SFINAE_EXPR #define BOOST_NO_CXX11_STATIC_ASSERT -#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_THREAD_LOCAL #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -139,7 +137,6 @@ #if __cplusplus >= 201103L -#undef BOOST_HAS_NRVO #undef BOOST_HAS_NRVO #undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION #undef BOOST_NO_CXX11_AUTO_DECLARATIONS @@ -165,7 +162,6 @@ #undef BOOST_NO_CXX11_SCOPED_ENUMS #undef BOOST_NO_CXX11_SFINAE_EXPR #undef BOOST_NO_CXX11_STATIC_ASSERT -#undef BOOST_NO_CXX11_STATIC_ASSERT #undef BOOST_NO_CXX11_TEMPLATE_ALIASES #undef BOOST_NO_CXX11_THREAD_LOCAL #undef BOOST_NO_CXX11_UNICODE_LITERALS From c78aa624695768209de0bb8651a1f8e2980384b8 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 12:15:14 -0600 Subject: [PATCH 222/261] Undefine temporary macros in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 2ceb49c9..8e797831 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -31,6 +31,10 @@ // other parameters (i.e. C++ standards conformance level and GCC // extensions). +//// +//// Front matter +//// + #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL) #ifdef __GNUC__ @@ -212,3 +216,10 @@ #if BOOST_CRAY_VERSION >= 80605 #endif // BOOST_CRAY_VERSION >= 80605 +//// +//// Remove temporary macros +//// + +#undef BOOST_GCC_VERSION +#undef BOOST_CRAY_VERSION + From f18418b17a0b88644b1bac9ed5d9b5323f75db75 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 13:06:18 -0600 Subject: [PATCH 223/261] Work through tests with 'cray.hpp' - Almost everything is passing. The only thing that's failing is 'limits_test.cpp', which is failing tests on lines 160 and 161 (shown below). if(lim::is_iec559) { BOOST_TEST(! (qnan == qnan)); # __LINE__ == 160 BOOST_TEST(qnan != qnan); # __LINE__ == 161 } --- include/boost/config/compiler/cray.hpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 8e797831..217007fc 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -45,6 +45,13 @@ # define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL) #endif +// We have to emulate some GCC macros in order to enable some Boost.Config +// tests. + +#if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define __GXX_EXPERIMENTAL_CXX0X__ +#endif // __GNUC__ + //// //// Parameter validation //// @@ -214,12 +221,28 @@ // #if BOOST_CRAY_VERSION >= 80605 + +#if __cplusplus == 201402L +#define BOOST_NO_CXX11_HDR_ATOMIC +#define BOOST_NO_CXX11_HDR_REGEX +#define BOOST_NO_CXX11_HDR_TYPEINDEX +#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS +#define BOOST_NO_CXX14_DIGIT_SEPARATORS +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#define BOOST_NO_TEMPLATE_TEMPLATES +#endif // __cplusplus == 201402L + #endif // BOOST_CRAY_VERSION >= 80605 //// //// 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 From 76ee8244df64aaa1805a6d2994770008cad4b5b7 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 14:27:35 -0600 Subject: [PATCH 224/261] Fix 'cray.hpp' for C++11 version 8.6.5 - All tests pass except that one about 'qnan' (described in the last commit). The test command line is: `b2 -q toolset=craype cxxstd=11 cxxstd-dialect=gnu`. --- include/boost/config/compiler/cray.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 217007fc..2f0a5f64 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -222,13 +222,16 @@ #if BOOST_CRAY_VERSION >= 80605 -#if __cplusplus == 201402L +#if __cplusplus >= 201103L #define BOOST_NO_CXX11_HDR_ATOMIC #define BOOST_NO_CXX11_HDR_REGEX +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L #define BOOST_NO_CXX11_HDR_TYPEINDEX #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS #define BOOST_NO_CXX14_DIGIT_SEPARATORS -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_NO_TEMPLATE_TEMPLATES #endif // __cplusplus == 201402L From da5012a135d601cc4114a8178030f9a541ee9957 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 14:31:45 -0600 Subject: [PATCH 225/261] Work on 'cray.hpp' for C++2003 version 8.6.5 - All tests pass except the 'qnan' test mentioned in the previous commit. The test command line is: `b2 -q toolset=craype cxxstd=03 cxxstd-dialect=gnu` --- include/boost/config/compiler/cray.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 2f0a5f64..03d0da9d 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -222,6 +222,9 @@ #if BOOST_CRAY_VERSION >= 80605 +#if __cplusplus >= 199711L +#endif // __cplusplus >= 199711L + #if __cplusplus >= 201103L #define BOOST_NO_CXX11_HDR_ATOMIC #define BOOST_NO_CXX11_HDR_REGEX From 31cbd59c85e4012bc032ddc02695a4838b615201 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 12 Dec 2017 14:35:22 -0600 Subject: [PATCH 226/261] 'cray.hpp' remove unneeded macros for C++14 - Test still passes: `b2 -q toolset=craype cxxstd=14 cxxstd-dialect=gnu`. --- include/boost/config/compiler/cray.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 03d0da9d..310cd5ec 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -232,10 +232,7 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#define BOOST_NO_CXX11_HDR_TYPEINDEX -#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS #define BOOST_NO_CXX14_DIGIT_SEPARATORS -#define BOOST_NO_TEMPLATE_TEMPLATES #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION >= 80605 From 9c220e9fff8ffbfc1df47e2de0282ceaebfeb76c Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Wed, 13 Dec 2017 15:27:00 -0600 Subject: [PATCH 227/261] Work on Cray 8.6.5 header for C++14 - We're down to 7 failing tests in 'test/all'. --- include/boost/config/compiler/cray.hpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 310cd5ec..a284d48f 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -49,7 +49,7 @@ // tests. #if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) -# define __GXX_EXPERIMENTAL_CXX0X__ +# define __GXX_EXPERIMENTAL_CXX0X__ 1 #endif // __GNUC__ //// @@ -232,6 +232,16 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L +#undef BOOST_DEDUCED_TYPENAME // Whether defined or undefined, has no affect on 'no_ded_typename_fail'. +#undef BOOST_HAS_CLOCK_GETTIME // Whether defined or undefined, has no affect on 'has_clock_gettime_pass'. +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // If defined, then 'no_com_value_init_fail' fails. If undefined, then 'no_com_value_init_pass' fails. +#undef BOOST_NO_CXX11_ALIGNAS +#undef BOOST_NO_CXX11_HDR_FUNCTIONAL +#define BOOST_NO_CXX11_HDR_REGEX // If defined, then 'no_cxx11_hdr_regex_fail' fails. If undefined, then 'no_cxx11_hdr_regex_pass' fails. +#undef BOOST_NO_CXX11_INLINE_NAMESPACES +#undef BOOST_NO_CXX11_SMART_PTR +#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#undef BOOST_NO_CXX14_CONSTEXPR #define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif // __cplusplus == 201402L From f34ea93eb212c9ec018f53f6f04a101ecf69f1e1 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Wed, 13 Dec 2017 15:34:37 -0600 Subject: [PATCH 228/261] Document test procedure for 'cray.hpp' - It took me a while to figure out that I had to be in the 'test/all' directory. --- include/boost/config/compiler/cray.hpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index a284d48f..0e1f5b48 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -30,6 +30,17 @@ // - 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=craype cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu +// ``` +// +// Using 'cxxstd-dialect=iso' is not supported at this time (the tests run, +// but many tests fail). //// //// Front matter From 5679e66d1061a781d0e77e73b681e48a02a8f7fc Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Wed, 13 Dec 2017 15:46:41 -0600 Subject: [PATCH 229/261] Add more notes about 'cray.hpp' failing tests --- include/boost/config/compiler/cray.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 0e1f5b48..ba6e3819 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -243,8 +243,8 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#undef BOOST_DEDUCED_TYPENAME // Whether defined or undefined, has no affect on 'no_ded_typename_fail'. -#undef BOOST_HAS_CLOCK_GETTIME // Whether defined or undefined, has no affect on 'has_clock_gettime_pass'. +#undef BOOST_DEDUCED_TYPENAME // Whether defined or undefined, has no affect on 'no_ded_typename_fail'. Also fails on GCC. +#undef BOOST_HAS_CLOCK_GETTIME // Whether defined or undefined, has no affect on 'has_clock_gettime_pass'. Similar failure on GCC, with 'undefined reference to clock_gettime'. May be related to 'ld' path and loaded modules. #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // If defined, then 'no_com_value_init_fail' fails. If undefined, then 'no_com_value_init_pass' fails. #undef BOOST_NO_CXX11_ALIGNAS #undef BOOST_NO_CXX11_HDR_FUNCTIONAL From bea3493fcb8d5282418827538951ecae5548cab0 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Wed, 13 Dec 2017 15:52:09 -0600 Subject: [PATCH 230/261] Add comments in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index ba6e3819..0575f634 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -56,8 +56,11 @@ # define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL) #endif -// We have to emulate some GCC macros in order to enable some Boost.Config -// tests. +// 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 From 83c9f749901cf81383a395b2631ae00cc0d79cfa Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Thu, 14 Dec 2017 10:07:25 -0600 Subject: [PATCH 231/261] Add '-lrt' to 'cray.hpp' test specification --- include/boost/config/compiler/cray.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 0575f634..4dd349c5 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -36,11 +36,14 @@ // ``` // module load cce/8.6.5 # Pick the version you want to test. // cd boost/libs/config/test/all -// b2 -j 8 toolset=craype cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu +// b2 -j 8 toolset=craype cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt // ``` // // Using 'cxxstd-dialect=iso' is not supported at this time (the tests run, // but many tests fail). +// +// 'linkflags=-lrt' is needed. Otherwise you get an 'undefined reference to +// clock_gettime' error. //// //// Front matter From f7165b4f706827f0dc01003cacdef2ff6e73c09e Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Thu, 14 Dec 2017 12:28:18 -0600 Subject: [PATCH 232/261] Add comments on macro definitions in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 4dd349c5..f76d5e49 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -39,11 +39,25 @@ // b2 -j 8 toolset=craype cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt // ``` // -// Using 'cxxstd-dialect=iso' is not supported at this time (the tests run, -// but many tests fail). +// Note: Using 'cxxstd-dialect=iso' is not supported at this time (the +// tests run, but many tests fail). // -// 'linkflags=-lrt' is needed. Otherwise you get an 'undefined reference to -// clock_gettime' error. +// Note: 'linkflags=-lrt' is needed in Cray Linux Environment. Otherwise +// you get an 'undefined reference to clock_gettime' error. +// +// 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 //// //// Front matter From bf628a3b3e323de408f5949370277b0cc27e8fe5 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Thu, 14 Dec 2017 14:25:57 -0600 Subject: [PATCH 233/261] Fix 'BOOST_NO_DEDUCED_TYPENAME' in 'cray.hpp' - Cray compiler requires the 'typename' keyword before a dependent type. --- include/boost/config/compiler/cray.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index f76d5e49..02991472 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -263,7 +263,7 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#undef BOOST_DEDUCED_TYPENAME // Whether defined or undefined, has no affect on 'no_ded_typename_fail'. Also fails on GCC. +#undef BOOST_NO_DEDUCED_TYPENAME // Not documented. See 'boost/libs/config/include/boost/config/detail/suffix.hpp'. #undef BOOST_HAS_CLOCK_GETTIME // Whether defined or undefined, has no affect on 'has_clock_gettime_pass'. Similar failure on GCC, with 'undefined reference to clock_gettime'. May be related to 'ld' path and loaded modules. #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // If defined, then 'no_com_value_init_fail' fails. If undefined, then 'no_com_value_init_pass' fails. #undef BOOST_NO_CXX11_ALIGNAS From 82c6e933f1f318b8dce74bdad28d149238ad1f35 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Thu, 14 Dec 2017 14:42:30 -0600 Subject: [PATCH 234/261] Remove 'BOOST_HAS_CLOCK_GETTIME' from 'cray.hpp' - This is a platform specific macro that is set elsewhere. It does not belong in a compiler configuration header. - This commit has no effect on test results for CCE 8.6.5 with C++14. --- include/boost/config/compiler/cray.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 02991472..45521138 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -264,7 +264,6 @@ #if __cplusplus >= 201402L #undef BOOST_NO_DEDUCED_TYPENAME // Not documented. See 'boost/libs/config/include/boost/config/detail/suffix.hpp'. -#undef BOOST_HAS_CLOCK_GETTIME // Whether defined or undefined, has no affect on 'has_clock_gettime_pass'. Similar failure on GCC, with 'undefined reference to clock_gettime'. May be related to 'ld' path and loaded modules. #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // If defined, then 'no_com_value_init_fail' fails. If undefined, then 'no_com_value_init_pass' fails. #undef BOOST_NO_CXX11_ALIGNAS #undef BOOST_NO_CXX11_HDR_FUNCTIONAL From 90ae2088680a985e7c89dcd407b1469a282ae89c Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 07:43:17 -0600 Subject: [PATCH 235/261] BOOST_NO_COMPLETE_VALUE_INITIALIZATION test is broken --- include/boost/config/compiler/cray.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 45521138..cac82aba 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -264,7 +264,18 @@ #if __cplusplus >= 201402L #undef BOOST_NO_DEDUCED_TYPENAME // Not documented. See 'boost/libs/config/include/boost/config/detail/suffix.hpp'. -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // If defined, then 'no_com_value_init_fail' fails. If undefined, then 'no_com_value_init_pass' fails. +// 'BOOST_NO_COMPLETE_VALUE_INITIALIZATION' test is broken. +// 'no_com_value_init_fail.cpp' should pass if one of the following occurs: +// +// - It fails to compile. +// - It fails to run. +// +// The test Jamfile file uses 'compile-fail', but the proper semantics for +// this test is 'compile-or-run-fail'. For the Cray compiler, +// 'no_com_value_init_fail.cpp' compiles, so the test indicates a defect. +// However, if we run the compiled program, it fails at runtime, so this +// really isn't a defect. +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // Test is broken. #undef BOOST_NO_CXX11_ALIGNAS #undef BOOST_NO_CXX11_HDR_FUNCTIONAL #define BOOST_NO_CXX11_HDR_REGEX // If defined, then 'no_cxx11_hdr_regex_fail' fails. If undefined, then 'no_cxx11_hdr_regex_pass' fails. From d26ae70b20e6e4c54f570e4f4aeeee052c6f2c3d Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 07:56:46 -0600 Subject: [PATCH 236/261] BOOST_NO_DEDUCED_TYPENAME test is broken --- include/boost/config/compiler/cray.hpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index cac82aba..06bcb9da 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -263,7 +263,18 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#undef BOOST_NO_DEDUCED_TYPENAME // Not documented. See 'boost/libs/config/include/boost/config/detail/suffix.hpp'. +// '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, regardless of the value of 'BOOST_DEDUCED_TYPENAME'. +// 'BOOST_DEDUCED_TYPENAME' must always have an appropriate value; it's not +// just something that you turn on or off. +#undef BOOST_NO_DEDUCED_TYPENAME // This is correct. Test is broken. // 'BOOST_NO_COMPLETE_VALUE_INITIALIZATION' test is broken. // 'no_com_value_init_fail.cpp' should pass if one of the following occurs: // @@ -275,7 +286,7 @@ // 'no_com_value_init_fail.cpp' compiles, so the test indicates a defect. // However, if we run the compiled program, it fails at runtime, so this // really isn't a defect. -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // Test is broken. +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test is broken. #undef BOOST_NO_CXX11_ALIGNAS #undef BOOST_NO_CXX11_HDR_FUNCTIONAL #define BOOST_NO_CXX11_HDR_REGEX // If defined, then 'no_cxx11_hdr_regex_fail' fails. If undefined, then 'no_cxx11_hdr_regex_pass' fails. From 3c4ea795d73d6869c7a5852cc8e2557e1fa590f0 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 08:18:43 -0600 Subject: [PATCH 237/261] Add explanatory comments to 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 28 +++++++++++--------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 06bcb9da..435dc553 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -45,6 +45,11 @@ // 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. @@ -271,25 +276,16 @@ // '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, regardless of the value of 'BOOST_DEDUCED_TYPENAME'. -// 'BOOST_DEDUCED_TYPENAME' must always have an appropriate value; it's not -// just something that you turn on or off. +// 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. -// 'BOOST_NO_COMPLETE_VALUE_INITIALIZATION' test is broken. -// 'no_com_value_init_fail.cpp' should pass if one of the following occurs: -// -// - It fails to compile. -// - It fails to run. -// -// The test Jamfile file uses 'compile-fail', but the proper semantics for -// this test is 'compile-or-run-fail'. For the Cray compiler, -// 'no_com_value_init_fail.cpp' compiles, so the test indicates a defect. -// However, if we run the compiled program, it fails at runtime, so this -// really isn't a defect. -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test is broken. +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. #undef BOOST_NO_CXX11_ALIGNAS #undef BOOST_NO_CXX11_HDR_FUNCTIONAL -#define BOOST_NO_CXX11_HDR_REGEX // If defined, then 'no_cxx11_hdr_regex_fail' fails. If undefined, then 'no_cxx11_hdr_regex_pass' fails. +#define BOOST_NO_CXX11_HDR_REGEX // This is correct. Test compiles, but fails to run. #undef BOOST_NO_CXX11_INLINE_NAMESPACES #undef BOOST_NO_CXX11_SMART_PTR #undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES From f2eca6c7fa50827dfd5d0344068771dd6bcc3bc7 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 08:30:21 -0600 Subject: [PATCH 238/261] Add comments in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 435dc553..5e512daf 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -63,6 +63,13 @@ // 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, defining a 'BOOST_NO_*' macro disables some feature, and +// undefining the macro enables the feature. If a feature is enabled, and +// the tests are passing, then you probably do not need to revisit it. +// However, if you have disabled a feature, you may want to try enabling +// it, even if the '_fail.cpp' tests are passing, because sometimes the +// '_fail.cpp' tests are broken. //// //// Front matter From 026ebd864e286c0333fc338cf85f728f290ac381 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 08:38:22 -0600 Subject: [PATCH 239/261] Alphabetize macros in 'cray.hpp' - Did not change any macro values. --- include/boost/config/compiler/cray.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 5e512daf..39f584f2 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -275,6 +275,15 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. +#undef BOOST_NO_CXX11_ALIGNAS +#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_INLINE_NAMESPACES +#undef BOOST_NO_CXX11_SMART_PTR +#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#undef BOOST_NO_CXX14_CONSTEXPR +#define BOOST_NO_CXX14_DIGIT_SEPARATORS // '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 @@ -289,15 +298,6 @@ // 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. -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. -#undef BOOST_NO_CXX11_ALIGNAS -#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_INLINE_NAMESPACES -#undef BOOST_NO_CXX11_SMART_PTR -#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES -#undef BOOST_NO_CXX14_CONSTEXPR -#define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION >= 80605 From ea46cf5332d57d8dd6ceaf78f67e39afa10f935b Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 09:11:19 -0600 Subject: [PATCH 240/261] Set more macros in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 39f584f2..b2c48a30 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -64,12 +64,12 @@ // // http://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html // -// Typically, defining a 'BOOST_NO_*' macro disables some feature, and -// undefining the macro enables the feature. If a feature is enabled, and -// the tests are passing, then you probably do not need to revisit it. -// However, if you have disabled a feature, you may want to try enabling -// it, even if the '_fail.cpp' tests are passing, because sometimes the -// '_fail.cpp' tests are broken. +// 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/check'. These are the macros +// you should pay attention to (in addition to macros that cause test +// failures). //// //// Front matter @@ -275,8 +275,16 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L +#undef BOOST_HAS_INT128 +#undef BOOST_HAS_MACRO_USE_FACET +#undef BOOST_HAS_MS_INT64 +#undef BOOST_HAS_SGI_TYPE_TRAITS +#undef BOOST_HAS_STLP_USE_FACET +#undef BOOST_HAS_TWO_ARG_USE_FACET +#undef BOOST_MSVC_STD_ITERATOR #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. #undef BOOST_NO_CXX11_ALIGNAS +#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_INLINE_NAMESPACES @@ -298,6 +306,7 @@ // 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. +#define BOOST_NO_MS_INT64_NUMERIC_LIMITS // This is also defined in 'boost/libs/config/include/boost/config/detail/suffix.hpp'. Changing it here has no effect. #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION >= 80605 From 382913d25d68e1ecb6d337e4ac1e54b65b5fde15 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 09:34:32 -0600 Subject: [PATCH 241/261] Work on Cray 8.6.5 C++2011 configuration --- include/boost/config/compiler/cray.hpp | 30 ++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index b2c48a30..3b19fd92 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -269,29 +269,15 @@ #endif // __cplusplus >= 199711L #if __cplusplus >= 201103L -#define BOOST_NO_CXX11_HDR_ATOMIC -#define BOOST_NO_CXX11_HDR_REGEX -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -#endif // __cplusplus >= 201103L - -#if __cplusplus >= 201402L -#undef BOOST_HAS_INT128 -#undef BOOST_HAS_MACRO_USE_FACET -#undef BOOST_HAS_MS_INT64 -#undef BOOST_HAS_SGI_TYPE_TRAITS -#undef BOOST_HAS_STLP_USE_FACET -#undef BOOST_HAS_TWO_ARG_USE_FACET -#undef BOOST_MSVC_STD_ITERATOR -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. #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_INLINE_NAMESPACES #undef BOOST_NO_CXX11_SMART_PTR #undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES -#undef BOOST_NO_CXX14_CONSTEXPR -#define BOOST_NO_CXX14_DIGIT_SEPARATORS +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run. // '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 @@ -306,6 +292,18 @@ // 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. +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L +#undef BOOST_HAS_INT128 +#undef BOOST_HAS_MACRO_USE_FACET +#undef BOOST_HAS_MS_INT64 +#undef BOOST_HAS_SGI_TYPE_TRAITS +#undef BOOST_HAS_STLP_USE_FACET +#undef BOOST_HAS_TWO_ARG_USE_FACET +#undef BOOST_MSVC_STD_ITERATOR +#undef BOOST_NO_CXX14_CONSTEXPR +#define BOOST_NO_CXX14_DIGIT_SEPARATORS #define BOOST_NO_MS_INT64_NUMERIC_LIMITS // This is also defined in 'boost/libs/config/include/boost/config/detail/suffix.hpp'. Changing it here has no effect. #endif // __cplusplus == 201402L From d1e0933528e2512b12c97aae2b1729bd1c302422 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 10:36:01 -0600 Subject: [PATCH 242/261] Improve Cray 8.6.5 C++2003 configuration --- include/boost/config/compiler/cray.hpp | 36 ++++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 3b19fd92..774b29cb 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -266,18 +266,19 @@ #if BOOST_CRAY_VERSION >= 80605 #if __cplusplus >= 199711L -#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_INLINE_NAMESPACES -#undef BOOST_NO_CXX11_SMART_PTR -#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#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. +#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX // This is correct, even though '*_fail.cpp' test fails. +#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 @@ -292,6 +293,19 @@ // 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_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 +#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L From 900c36e2fbe07af6261c724c6736ee8bb8f58326 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 11:54:59 -0600 Subject: [PATCH 243/261] 'cray.hpp' empty section for 8.7.0 --- include/boost/config/compiler/cray.hpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 774b29cb..f3eb1298 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -323,6 +323,23 @@ #endif // BOOST_CRAY_VERSION >= 80605 +// +// 8.7.0 +// + +#if BOOST_CRAY_VERSION >= 80700 + +#if __cplusplus >= 199711L +#endif // __cplusplus >= 199711L + +#if __cplusplus >= 201103L +#endif // __cplusplus >= 201103L + +#if __cplusplus >= 201402L +#endif // __cplusplus == 201402L + +#endif // BOOST_CRAY_VERSION >= 80700 + //// //// Remove temporary macros //// From 07993e2e2fe3c2123bff89271c18bcdf9ab64021 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Fri, 15 Dec 2017 12:06:36 -0600 Subject: [PATCH 244/261] Remove redundant macro definitions in 'cray.hpp' - This commit had no effect on test results. --- include/boost/config/compiler/cray.hpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index f3eb1298..a5d18d0d 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -309,16 +309,8 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#undef BOOST_HAS_INT128 -#undef BOOST_HAS_MACRO_USE_FACET -#undef BOOST_HAS_MS_INT64 -#undef BOOST_HAS_SGI_TYPE_TRAITS -#undef BOOST_HAS_STLP_USE_FACET -#undef BOOST_HAS_TWO_ARG_USE_FACET -#undef BOOST_MSVC_STD_ITERATOR #undef BOOST_NO_CXX14_CONSTEXPR #define BOOST_NO_CXX14_DIGIT_SEPARATORS -#define BOOST_NO_MS_INT64_NUMERIC_LIMITS // This is also defined in 'boost/libs/config/include/boost/config/detail/suffix.hpp'. Changing it here has no effect. #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION >= 80605 From 620f819e3b7aedbd158d5ca17a5e7cefed0e7f7e Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Wed, 10 Jan 2018 12:56:12 -0600 Subject: [PATCH 245/261] Handle Cray developer builds --- include/boost/config/compiler/cray.hpp | 73 +++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index a5d18d0d..37b36c11 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -75,7 +75,78 @@ //// Front matter //// -#define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL) +// 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__) From 3144e2a8e4cc2038bb0a71797e3ea91170262a40 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 6 Feb 2018 11:29:08 -0600 Subject: [PATCH 246/261] Fix comments in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 37b36c11..1bb5a380 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -36,9 +36,8 @@ // ``` // module load cce/8.6.5 # Pick the version you want to test. // cd boost/libs/config/test/all -// b2 -j 8 toolset=craype cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt +// 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). // From c04b9913219e3c56b1ecd745d68cd81cde8305b7 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 6 Feb 2018 11:36:52 -0600 Subject: [PATCH 247/261] Add section for next release to 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 1bb5a380..54b1c4fb 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -402,6 +402,23 @@ #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 //// From 7238f9f0f63f7265edeac66306e5af841b387981 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 6 Feb 2018 12:43:21 -0600 Subject: [PATCH 248/261] Fix 'cray.hpp' BOOST_NO_CXX11_HDR_ATOMIC setting --- include/boost/config/compiler/cray.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 54b1c4fb..f272683e 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -415,6 +415,7 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L +#undef BOOST_NO_CXX11_HDR_ATOMIC #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION > 80799 From 54c07da09b26c424b4fda749074037b4d97fc225 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 10 Apr 2018 10:32:18 -0500 Subject: [PATCH 249/261] Update copyright information --- include/boost/config/compiler/cray.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index f272683e..82129541 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -1,5 +1,5 @@ -// (C) Copyright John Maddock 2011. -// (C) Copyright Cray, Inc. 2013 - 2017. +// 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) @@ -163,7 +163,7 @@ #if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) # define __GXX_EXPERIMENTAL_CXX0X__ 1 -#endif // __GNUC__ +#endif //// //// Parameter validation From 5e33b4c27a828fde033321e938b17de1b4512299 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 10 Apr 2018 11:39:43 -0500 Subject: [PATCH 250/261] Update 'cray.hpp' for upcoming release --- include/boost/config/compiler/cray.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 82129541..f20371dc 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -392,9 +392,13 @@ #if BOOST_CRAY_VERSION >= 80700 #if __cplusplus >= 199711L +#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#undef BOOST_NO_SFINAE_EXPR #endif // __cplusplus >= 199711L #if __cplusplus >= 201103L +#undef BOOST_NO_CXX11_HDR_ATOMIC +#undef BOOST_NO_CXX11_HDR_REGEX #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L @@ -415,7 +419,6 @@ #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L -#undef BOOST_NO_CXX11_HDR_ATOMIC #endif // __cplusplus == 201402L #endif // BOOST_CRAY_VERSION > 80799 @@ -431,4 +434,3 @@ //#undef BOOST_COMPILER #undef BOOST_GCC_VERSION #undef BOOST_CRAY_VERSION - From 42e1c7913a557e123969f682e4d3c1f8b5c8605e Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 10 Apr 2018 12:40:55 -0500 Subject: [PATCH 251/261] Update 'cray.hpp' for CCE 8.6.5 --- include/boost/config/compiler/cray.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index f20371dc..0451735a 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -346,7 +346,7 @@ #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. -#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX // 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 / @@ -363,6 +363,7 @@ // 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 @@ -375,7 +376,6 @@ #undef BOOST_NO_CXX11_SFINAE_EXPR #undef BOOST_NO_CXX11_SMART_PTR #undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES -#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #endif // __cplusplus >= 201103L #if __cplusplus >= 201402L @@ -392,8 +392,6 @@ #if BOOST_CRAY_VERSION >= 80700 #if __cplusplus >= 199711L -#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX -#undef BOOST_NO_SFINAE_EXPR #endif // __cplusplus >= 199711L #if __cplusplus >= 201103L From 664b2fdec872091ab28cfcd201a5823de114a38d Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 10 Apr 2018 13:29:34 -0500 Subject: [PATCH 252/261] Update 'cray.hpp' for CCE 8.6.4 --- include/boost/config/compiler/cray.hpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index 0451735a..b238c9ac 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -330,10 +330,11 @@ #endif // BOOST_CRAY_VERSION >= 80500 // -// 8.6.5 +// 8.6.4 +// (versions prior to 8.6.5 do not define _RELEASE_PATCHLEVEL) // -#if BOOST_CRAY_VERSION >= 80605 +#if BOOST_CRAY_VERSION >= 80600 #if __cplusplus >= 199711L #define BOOST_HAS_FLOAT128 @@ -383,7 +384,12 @@ #define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif // __cplusplus == 201402L -#endif // BOOST_CRAY_VERSION >= 80605 +#endif // BOOST_CRAY_VERSION >= 80600 + +// +// 8.6.5 +// (no change from 8.6.4) +// // // 8.7.0 From d70b2988262f25350ed1e8c2fc6a6a04630576f5 Mon Sep 17 00:00:00 2001 From: Justin LaPolla Date: Tue, 10 Apr 2018 13:59:50 -0500 Subject: [PATCH 253/261] Fix typo in comment in 'cray.hpp' --- include/boost/config/compiler/cray.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp index b238c9ac..412ef9ef 100644 --- a/include/boost/config/compiler/cray.hpp +++ b/include/boost/config/compiler/cray.hpp @@ -66,7 +66,7 @@ // 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/check'. These are the macros +// 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). From 17c680679718ec15f2c9bc9f2373df7a4377293a Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 15 Apr 2018 20:53:20 +0100 Subject: [PATCH 254/261] Bump to 1.68.0 --- include/boost/version.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/version.hpp b/include/boost/version.hpp index e96f3432..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 106700 +#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_67" +#define BOOST_LIB_VERSION "1_68" #endif From f3ebdc4558d7bcbf14b08f75d770a2a06ad7506c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 18 Apr 2018 19:30:39 +0100 Subject: [PATCH 255/261] Add docs for BOOST_NO_CXX17_IF_CONSTEXPR [CI SKIP] --- doc/html/boost_config/acknowledgements.html | 2 +- .../boost_config/boost_macro_reference.html | 32 +++++++++++++++++-- doc/html/boost_config/build_config.html | 2 +- doc/html/boost_config/cstdint.html | 4 +-- .../guidelines_for_boost_authors.html | 4 +-- doc/html/boost_config/rationale.html | 4 +-- doc/html/index.html | 10 +++--- doc/macro_reference.qbk | 1 + 8 files changed, 43 insertions(+), 16 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index e3cd5555..8281d052 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index caa4e5c9..ed19e071 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -26,7 +26,7 @@
- @@ -5956,7 +5982,7 @@ Macros for libraries with separate source code -
+ - -
- - +

Last revised: December 22, 2017 at 23:49:22 GMT

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


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 737d4eb5..f44340dd 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -950,6 +950,7 @@ that are not yet supported by a particular compiler or library. [[`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] From 39f48141c5d50f6203590e6153a76c042e4c465e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 18 Apr 2018 20:08:22 +0100 Subject: [PATCH 256/261] Fix some warnings and miswritten test case, add test for BOOST_HAS_PRAGMA_DETECT_MISMATCH. --- checks/Jamfile.v2 | 3 ++- checks/test_case.cpp | 7 ++++- test/all/Jamfile.v2 | 5 +++- test/boost_has_detect_mismatch.ipp | 24 +++++++++++++++++ test/boost_has_part_alloc.ipp | 2 +- test/boost_no_cxx11_hdr_atomic.ipp | 2 ++ test/boost_no_cxx11_hdr_tuple.ipp | 1 + test/boost_no_cxx11_pointer_traits.ipp | 4 +-- test/boost_no_std_allocator.ipp | 2 +- test/config_info.cpp | 2 ++ test/config_test.cpp | 12 ++++++++- test/has_detect_mismatch_fail.cpp | 37 ++++++++++++++++++++++++++ test/has_detect_mismatch_pass.cpp | 37 ++++++++++++++++++++++++++ 13 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 test/boost_has_detect_mismatch.ipp create mode 100644 test/has_detect_mismatch_fail.cpp create mode 100644 test/has_detect_mismatch_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 2c4d4672..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 Tue Mar 6 17:44:35 2018 +# 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 @@ -14,6 +14,7 @@ import path ; 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 ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 7c0f8a3f..7d9cb10c 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Tue Mar 6 17:44:35 2018 +// 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 @@ -26,6 +26,11 @@ # 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 # ifndef BOOST_HAS_DIRENT_H # error "Feature macro BOOST_HAS_DIRENT_H is not defined." diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index bff9133a..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 Tue Mar 6 17:44:35 2018 +# 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 ] ; diff --git a/test/boost_has_detect_mismatch.ipp b/test/boost_has_detect_mismatch.ipp new file mode 100644 index 00000000..3f29fcd3 --- /dev/null +++ b/test/boost_has_detect_mismatch.ipp @@ -0,0 +1,24 @@ +// (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 { + +int test() +{ +# pragma detect_mismatch("Boost_Config", "1") + return 0; +} + +} + diff --git a/test/boost_has_part_alloc.ipp b/test/boost_has_part_alloc.ipp index 3e4c2cb8..ea31dd94 100644 --- a/test/boost_has_part_alloc.ipp +++ b/test/boost_has_part_alloc.ipp @@ -25,7 +25,7 @@ namespace boost_has_partial_std_allocator{ // template -int test_allocator(const T& i) +int test_allocator(const T&) { typedef std::allocator alloc1_t; #if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) 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_pointer_traits.ipp b/test/boost_no_cxx11_pointer_traits.ipp index d7223f32..3d1bb1f8 100644 --- a/test/boost_no_cxx11_pointer_traits.ipp +++ b/test/boost_no_cxx11_pointer_traits.ipp @@ -18,7 +18,7 @@ namespace boost_no_cxx11_pointer_traits { template struct pointer { template - using rebind = pointer; + using rebind = pointer; }; template @@ -31,7 +31,7 @@ struct result > { int test() { - return result >::rebind >::value; + return result >::rebind >::value; } } /* boost_no_cxx11_pointer_traits */ diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp index 80e048e4..c3868dd8 100644 --- a/test/boost_no_std_allocator.ipp +++ b/test/boost_no_std_allocator.ipp @@ -25,7 +25,7 @@ namespace boost_no_std_allocator{ #endif template -int test_allocator(const T& i) +int test_allocator(const T&) { typedef std::allocator alloc1_t; #if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) diff --git a/test/config_info.cpp b/test/config_info.cpp index 15ea5d4a..b5629772 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1054,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); @@ -1235,6 +1236,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 2d27e53c..c7e4e8a6 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Tue Mar 6 17:44:35 2018 +// 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 @@ -823,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 @@ -1006,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; 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(); +} + From a97d5f32d4ed7568994c8d1801e0a498a74365eb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 19 Apr 2018 09:12:18 +0100 Subject: [PATCH 257/261] Previous fix broke some tests, second try at warning suppression. --- test/boost_has_part_alloc.ipp | 4 ++-- test/boost_no_std_allocator.ipp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test/boost_has_part_alloc.ipp b/test/boost_has_part_alloc.ipp index ea31dd94..fac5fed4 100644 --- a/test/boost_has_part_alloc.ipp +++ b/test/boost_has_part_alloc.ipp @@ -25,7 +25,7 @@ namespace boost_has_partial_std_allocator{ // template -int test_allocator(const T&) +int test_allocator(const T& i) { typedef std::allocator alloc1_t; #if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) @@ -38,7 +38,7 @@ int test_allocator(const T&) 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; diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp index c3868dd8..920bf1de 100644 --- a/test/boost_no_std_allocator.ipp +++ b/test/boost_no_std_allocator.ipp @@ -25,7 +25,7 @@ namespace boost_no_std_allocator{ #endif template -int test_allocator(const T&) +int test_allocator(const T& i) { typedef std::allocator alloc1_t; #if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700))) @@ -41,6 +41,7 @@ int test_allocator(const 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; From c80a3088a0c16d4517fb3b30598c1c68a1004d0b Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 19 Apr 2018 18:25:38 +0100 Subject: [PATCH 258/261] #pragma detect_mismatch should be at global scope. [CI SKIP] --- test/boost_has_detect_mismatch.ipp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/boost_has_detect_mismatch.ipp b/test/boost_has_detect_mismatch.ipp index 3f29fcd3..6430dd46 100644 --- a/test/boost_has_detect_mismatch.ipp +++ b/test/boost_has_detect_mismatch.ipp @@ -14,9 +14,10 @@ namespace boost_has_pragma_detect_mismatch { +# pragma detect_mismatch("Boost_Config", "1") + int test() { -# pragma detect_mismatch("Boost_Config", "1") return 0; } From eb68e4725a1d64860aa945a6ba32f4876bb2e611 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 28 Apr 2018 20:32:16 +0300 Subject: [PATCH 259/261] Add parentheses to BOOST_CUDA_VERSION Expressions like `BOOST_CUDA_VERSION / 1000000` don't work correctly; add parentheses around the expression to fix. --- include/boost/config/compiler/nvcc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index f21b9b54..64909409 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -12,7 +12,7 @@ #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__ +# 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 From 47bc9827be2093bfdd4509dfdae19a256b59d62a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 28 Jun 2018 18:05:33 +0100 Subject: [PATCH 260/261] Tentatively add support for gcc-8 CI testing. --- .travis.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.travis.yml b/.travis.yml index 0bb59050..ff0257a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -108,6 +108,15 @@ matrix: 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 From 9fd87d6d7d7d0966f03d28ddb27149e193328748 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 9 Jul 2018 17:54:42 +0100 Subject: [PATCH 261/261] CUDA 9 does support constexpr for msvc. --- include/boost/config/compiler/nvcc.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 64909409..ed035fcf 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -33,8 +33,8 @@ #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