From d5694b49e22dcac92a553e6831c0a2b4b525804a Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Thu, 9 Apr 2015 07:48:22 +1200 Subject: [PATCH 01/10] Haiku: remove invalid feature definitions - Fixes the functional/hash library - Fixes problems with the thread library --- include/boost/config/platform/haiku.hpp | 2 -- 1 file changed, 2 deletions(-) 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: From 5169ec9d5723731780ded5675c88ec16afdaabb1 Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Tue, 21 Apr 2015 11:32:10 +0200 Subject: [PATCH 02/10] Update for MSVC 14 CTP 6 - C++ 14 digit separators were implemented in CTP5: https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#vcplus - the value initialization bugs have been fixed: http://www.boost.org/development/tests/develop/developer/output/teeks99-08f-win2012R2-64on64-boost-bin-v2-libs-utility-test-value_init_workaround_test-test-msvc-14-0-dbg-adrs-mdl-64-thrd-mlt.html --- include/boost/config/compiler/visualc.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index ce6bbeec..aedb318e 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.22609 (VC14 CTP 6): +#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022609) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From 8787f6b0718b6b0750869ba52bc65d26db665a05 Mon Sep 17 00:00:00 2001 From: Ananth Jasty Date: Wed, 15 Apr 2015 17:59:47 -0700 Subject: [PATCH 03/10] Changes required for aarch64 support in boost::config. --- checks/architecture/arm.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 + From 88167ee7059dfa3449be1176e236e6b17c4829b4 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 24 Apr 2015 17:10:13 +0100 Subject: [PATCH 04/10] Tentative fix for GCC 5.1 C++11 feature updates. --- include/boost/config/stdlib/libstdcpp3.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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: From a2ad620450f3e78c3d46658d8a8c842951ce9445 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 24 Apr 2015 17:46:29 +0100 Subject: [PATCH 05/10] Fix inconsistencies in name of boost_no_cxx14_digit_separator(s). --- checks/Jamfile.v2 | 2 +- checks/test_case.cpp | 2 +- test/all/Jamfile.v2 | 2 +- test/boost_no_cxx14_digit_separator.ipp | 2 +- test/config_test.cpp | 4 ++-- test/no_cxx14_digit_separator_fail.cpp | 2 +- test/no_cxx14_digit_separator_pass.cpp | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) 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/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/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_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(); } From d7e258faf5ca45734a9f0349f2a9decedda50f14 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 24 Apr 2015 18:10:30 +0100 Subject: [PATCH 06/10] Update Jamfile to check for -latomic The config_test tests all require linking against -latomic when GCC provides it in order to test for . Seems to be a new gcc-5.1.0 requirement. --- test/Jamfile.v2 | 9 +++++++++ 1 file changed, 9 insertions(+) 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 ] From 55ea43b454332d9ed5269b09761aa96f80860c99 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 26 Apr 2015 22:57:44 +0100 Subject: [PATCH 07/10] Version bump. --- 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 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 From fa0e91cf2141dc7b3c95991984db29d1d784eebf Mon Sep 17 00:00:00 2001 From: Beman Date: Sat, 2 May 2015 18:06:24 -0400 Subject: [PATCH 08/10] Update version check for VisualStudio 2015 RC. --- 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 aedb318e..79c009ae 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -284,8 +284,8 @@ #endif // -// last known and checked version is 19.00.22609 (VC14 CTP 6): -#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022609) +// 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 From a0f7b67145b0e943501f8840b6901288ef4890bc Mon Sep 17 00:00:00 2001 From: Beman Date: Mon, 4 May 2015 09:37:42 -0400 Subject: [PATCH 09/10] Add missing BOOST_NO_CXX11_NUMERIC_LIMITS macro reference doc entry --- doc/html/boost_config/boost_macro_reference.html | 13 +++++++++++++ doc/html/index.html | 2 +- doc/macro_reference.qbk | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) 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. ]] From 4ec6a18686c5814dca17b047898226cfa7306c9b Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Tue, 5 May 2015 11:46:28 +0200 Subject: [PATCH 10/10] Add more constexpr tests MSVC 14 RC currently passes the constexpr tests, but fails to compile Boost if BOOST_NO_CXX11_CONSTEXPR is not defined. Added three tests that clang can compile in C++11 mode, but MSVC cannot. --- test/boost_no_constexpr.ipp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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);