diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 4d2f4373..9c9d61e5 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -335,7 +335,7 @@ 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_SEPARATOR : cxx14_digit_separator ; +run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS : cxx14_digit_separators ; alias cxx14_digit_separator : cxx14_digit_separator.output ; explicit cxx14_digit_separator ; run-simple test_case.cpp : : : TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS : cxx14_generic_lambdas ; diff --git a/checks/architecture/arm.cpp b/checks/architecture/arm.cpp index 6a83737f..794aba8b 100644 --- a/checks/architecture/arm.cpp +++ b/checks/architecture/arm.cpp @@ -8,6 +8,8 @@ #if !defined(__arm__) && !defined(__thumb__) && \ !defined(__TARGET_ARCH_ARM) && !defined(__TARGET_ARCH_THUMB) && \ - !defined(_ARM) && !defined(_M_ARM) + !defined(_ARM) && !defined(_M_ARM) && \ + !defined(__aarch64__) #error "Not ARM" #endif + diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 7d21a8f3..9940abec 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -423,7 +423,7 @@ namespace test = boost_no_cxx14_decltype_auto; #endif #ifdef TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS # include "../test/boost_no_cxx14_digit_separator.ipp" -namespace test = boost_no_cxx14_digit_separator; +namespace test = boost_no_cxx14_digit_separators; #endif #ifdef TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS # include "../test/boost_no_cxx14_generic_lambda.ipp" diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 69a16066..b2603156 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -2960,6 +2960,19 @@ + +

+ BOOST_NO_CXX11_NUMERIC_LIMITS +

+ + +

+ The standard library <limits> + header does not support the C++11 version of numeric_limits. +

+ + +

BOOST_NO_CXX11_RANGE_BASED_FOR diff --git a/doc/html/index.html b/doc/html/index.html index a128e667..0163fc8a 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -988,7 +988,7 @@ - +

Last revised: October 21, 2014 at 11:37:59 GMT

Last revised: May 04, 2015 at 13:34:36 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index cd652ea3..9851a83d 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -670,6 +670,9 @@ compilers implementing an early draft of the C++11 standard (in particular, inco ]] [[`BOOST_NO_CXX11_NULLPTR`][The compiler does not support `nullptr`. ]] +[[`BOOST_NO_CXX11_NUMERIC_LIMITS`][The standard library `` header does +not support the C++11 version of `numeric_limits`. +]] [[`BOOST_NO_CXX11_RANGE_BASED_FOR`][The compiler does not support range-based for statements. ]] diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index ce6bbeec..79c009ae 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -67,7 +67,7 @@ #endif -// MSVC (including the latest checked version) has not yet completely +// MSVC before version 14 has not yet completely // implemented value-initialization, as is reported: // "VC++ does not value-initialize members of derived classes without // user-declared constructor", reported in 2009 by Sylvester Hesp: @@ -80,7 +80,9 @@ // https://connect.microsoft.com/VisualStudio/feedback/details/100744 // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues // (Niels Dekker, LKEB, May 2010) +#if _MSC_VER < 1900 # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif #ifndef _NATIVE_WCHAR_T_DEFINED # define BOOST_NO_INTRINSIC_WCHAR_T @@ -172,9 +174,9 @@ # define BOOST_NO_CXX11_DECLTYPE_N3276 #endif -// C++11 features supported by VC++ 14 (aka 2015) Preview +// C++11 features supported by VC++ 14 (aka 2015) CTP 5 // -#if (_MSC_FULL_VER < 190022310) +#if (_MSC_FULL_VER < 190022512) # define BOOST_NO_CXX11_NOEXCEPT # define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_USER_DEFINED_LITERALS @@ -188,6 +190,7 @@ # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION # define BOOST_NO_CXX14_BINARY_LITERALS # define BOOST_NO_CXX14_GENERIC_LAMBDAS +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif // C++11 features not supported by any versions @@ -202,9 +205,6 @@ #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) # define BOOST_NO_CXX14_CONSTEXPR #endif -#if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATORS -#endif #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif @@ -284,8 +284,8 @@ #endif // -// last known and checked version is 19.00.22129 (VC14 Preview): -#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022310) +// last known and checked version is 19.00.22816 (VC++ 2015 RC): +#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022816) # 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/platform/haiku.hpp b/include/boost/config/platform/haiku.hpp index e3910d84..750866c4 100644 --- a/include/boost/config/platform/haiku.hpp +++ b/include/boost/config/platform/haiku.hpp @@ -11,7 +11,6 @@ #define BOOST_HAS_UNISTD_H #define BOOST_HAS_STDINT_H -#define BOOST_HASH_NO_EXTENSIONS #ifndef BOOST_DISABLE_THREADS # define BOOST_HAS_THREADS @@ -26,7 +25,6 @@ // thread API's not auto detected: // #define BOOST_HAS_SCHED_YIELD -#define BOOST_HAS_PTHREAD_YIELD #define BOOST_HAS_GETTIMEOFDAY // boilerplate code: diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index e4ff8542..48d9e949 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -123,7 +123,7 @@ #ifdef __clang__ #if __has_include() -# define BOOST_LIBSTDCXX_VERSION 50000 +# define BOOST_LIBSTDCXX_VERSION 50100 #elif __has_include() # define BOOST_LIBSTDCXX_VERSION 40900 #elif __has_include() @@ -213,6 +213,8 @@ # define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_HDR_THREAD #endif +// C++0x features in GCC 4.9.0 and later +// #if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11) // 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. @@ -223,13 +225,15 @@ // As of clang-3.6, libstdc++ header throws up errors with clang: # define BOOST_NO_CXX11_HDR_ATOMIC #endif - -// C++0x headers not yet (fully!) implemented // +// C++0x features in GCC 5.1 and later +// +#if (BOOST_LIBSTDCXX_VERSION < 50100) || !defined(BOOST_LIBSTDCXX11) # define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_STD_ALIGN +#endif // // Headers not present on Solaris with the Oracle compiler: diff --git a/include/boost/version.hpp b/include/boost/version.hpp index ece5fe6e..7b64aedb 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 105800 +#define BOOST_VERSION 105900 // // 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_58" +#define BOOST_LIB_VERSION "1_59" #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 05d27df8..986913cb 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -19,6 +19,11 @@ import ../checks/config : requires ; local is_unix = [ modules.peek : UNIX ] ; +lib atomic ; + +link config_info.cpp atomic : : has_atomic_lib ; +explicit has_atomic_lib ; + if $(is_unix) { local osname = [ SHELL uname ] ; @@ -38,6 +43,7 @@ test-suite config : #input-files : #requirements multi + [ check-target-builds has_atomic_lib : atomic ] : config_test_threaded ] [ run config_test.cpp @@ -48,6 +54,7 @@ test-suite config linux:-lpthread linux:-lrt gcc:$(OTHERFLAGS) + [ check-target-builds has_atomic_lib : atomic ] ] [ run config_test.cpp : #args @@ -57,6 +64,7 @@ test-suite config linux:-lpthread linux:-lrt gcc:$(OTHERFLAGS) + [ check-target-builds has_atomic_lib : atomic ] : config_test_no_rtti ] [ run config_test.cpp @@ -67,6 +75,7 @@ test-suite config linux:-lpthread linux:-lrt gcc:$(OTHERFLAGS) + [ check-target-builds has_atomic_lib : atomic ] : config_test_no_except ] [ run config_info.cpp : : : always_show_run_output single msvc:static msvc:static ] diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index fe833397..ece421c9 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -331,7 +331,7 @@ test-suite "BOOST_NO_CXX14_CONSTEXPR" : test-suite "BOOST_NO_CXX14_DECLTYPE_AUTO" : [ run ../no_cxx14_decltype_auto_pass.cpp ] [ compile-fail ../no_cxx14_decltype_auto_fail.cpp ] ; -test-suite "BOOST_NO_CXX14_DIGIT_SEPARATOR" : +test-suite "BOOST_NO_CXX14_DIGIT_SEPARATORS" : [ run ../no_cxx14_digit_separator_pass.cpp ] [ compile-fail ../no_cxx14_digit_separator_fail.cpp ] ; test-suite "BOOST_NO_CXX14_GENERIC_LAMBDAS" : diff --git a/test/boost_no_constexpr.ipp b/test/boost_no_constexpr.ipp index 563bdb20..5084ae03 100644 --- a/test/boost_no_constexpr.ipp +++ b/test/boost_no_constexpr.ipp @@ -36,6 +36,32 @@ constexpr const A a = 42; X xx; // OK: unique conversion to int +// virtual function +struct B +{ + virtual void vf() {} +}; +struct C : B +{ + constexpr C() {} +}; + +// aggregate initialization +struct D +{ + int val[2]; + constexpr D() : val() {} +}; + +// virtual base +struct E +{ +}; +struct F : virtual E +{ +}; +constexpr F& f(F& out) { return out; } + int test() { int i = square(5); diff --git a/test/boost_no_cxx14_digit_separator.ipp b/test/boost_no_cxx14_digit_separator.ipp index 3bdbbf43..ed4bcf23 100644 --- a/test/boost_no_cxx14_digit_separator.ipp +++ b/test/boost_no_cxx14_digit_separator.ipp @@ -11,7 +11,7 @@ // TITLE: C++14 digit separator unavailable // DESCRIPTION: The compiler does not support C++14 digit separator -namespace boost_no_cxx14_digit_separator +namespace boost_no_cxx14_digit_separators { int test() diff --git a/test/config_test.cpp b/test/config_test.cpp index b266f4eb..6d2db3e4 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -280,7 +280,7 @@ namespace boost_no_cxx14_decltype_auto = empty_boost; #ifndef BOOST_NO_CXX14_DIGIT_SEPARATORS #include "boost_no_cxx14_digit_separator.ipp" #else -namespace boost_no_cxx14_digit_separator = empty_boost; +namespace boost_no_cxx14_digit_separators = empty_boost; #endif #ifndef BOOST_NO_CXX14_GENERIC_LAMBDAS #include "boost_no_cxx14_generic_lambda.ipp" @@ -1501,7 +1501,7 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX14_DECLTYPE_AUTO at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_cxx14_digit_separator::test()) + if(0 != boost_no_cxx14_digit_separators::test()) { std::cerr << "Failed test for BOOST_NO_CXX14_DIGIT_SEPARATORS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; diff --git a/test/no_cxx14_digit_separator_fail.cpp b/test/no_cxx14_digit_separator_fail.cpp index 8c0c06a1..59a30018 100644 --- a/test/no_cxx14_digit_separator_fail.cpp +++ b/test/no_cxx14_digit_separator_fail.cpp @@ -32,6 +32,6 @@ int main( int, char *[] ) { - return boost_no_cxx14_digit_separator::test(); + return boost_no_cxx14_digit_separators::test(); } diff --git a/test/no_cxx14_digit_separator_pass.cpp b/test/no_cxx14_digit_separator_pass.cpp index bb88cd29..a8814fe0 100644 --- a/test/no_cxx14_digit_separator_pass.cpp +++ b/test/no_cxx14_digit_separator_pass.cpp @@ -27,11 +27,11 @@ #ifndef BOOST_NO_CXX14_DIGIT_SEPARATORS #include "boost_no_cxx14_digit_separator.ipp" #else -namespace boost_no_cxx14_digit_separator = empty_boost; +namespace boost_no_cxx14_digit_separators = empty_boost; #endif int main( int, char *[] ) { - return boost_no_cxx14_digit_separator::test(); + return boost_no_cxx14_digit_separators::test(); }