From d13623884a4dcca5091129f50be4861d6f5f9abb Mon Sep 17 00:00:00 2001 From: Andrzej Krzemienski Date: Thu, 28 Jun 2018 02:10:57 +0200 Subject: [PATCH] hopefully fixed the libstdc++ 4.9 problem (thanks Jonathan) --- include/boost/optional/detail/experimental_traits.hpp | 8 +++++++- test/Jamfile.v2 | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/boost/optional/detail/experimental_traits.hpp b/include/boost/optional/detail/experimental_traits.hpp index 4ac8bc6..556aa99 100644 --- a/include/boost/optional/detail/experimental_traits.hpp +++ b/include/boost/optional/detail/experimental_traits.hpp @@ -14,6 +14,7 @@ #include #include +#include #include // The condition to use POD implementation @@ -38,11 +39,16 @@ # define BOOST_OPTIONAL_DETAIL_NO_SPEC_FOR_TRIVIAL_TYPES #endif +// GCC 5 or higher, or clang with libc++ or clang with libstdc++ 5 or higher #if __cplusplus >= 201103L # if BOOST_WORKAROUND(BOOST_GCC, >= 50000) # define BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS # elif (defined BOOST_CLANG) -# define BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS +# if BOOST_LIB_STD_CXX > 0 +# define BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS +# elif BOOST_LIB_STD_GNU >= 441200023 && BOOST_LIB_STD_GNU != 450600023 && BOOST_LIB_STD_GNU != 450600026 && BOOST_LIB_STD_GNU != 460800003 +# define BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS +# endif # endif #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index bb9acd4..e1690d2 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -23,6 +23,7 @@ import testing ; [ run optional_test_convert_from_T.cpp ] [ run optional_test_empty_braces.cpp ] [ run optional_test_make_optional.cpp ] + #[ run optional_test_flat_map.cpp ] [ run optional_test_map.cpp ] [ run optional_test_tie.cpp ] [ run optional_test_ref_assign_portable_minimum.cpp ] @@ -72,7 +73,7 @@ import testing ; [ run optional_test_static_properties.cpp ] [ compile optional_test_maybe_uninitialized_warning.cpp ] [ compile optional_test_deleted_default_ctor.cpp ] - [ run optional_xconfig_HACK_TO_LIST_PREDEFINED_MACROS.cpp ] + #[ run optional_xconfig_HACK_TO_LIST_PREDEFINED_MACROS.cpp ] [ run optional_xconfig_NO_PROPER_ASSIGN_FROM_CONST_INT_pass.cpp ] [ run-fail optional_xconfig_NO_PROPER_ASSIGN_FROM_CONST_INT_fail.cpp ] [ run optional_xconfig_NO_PROPER_CONVERT_FROM_CONST_INT_pass.cpp ]