From 9953994761b677552d3bfbf77391ab60c1ce3437 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 7 Oct 2016 23:07:33 -0500 Subject: [PATCH 1/7] Add, and update, documentation build targets. --- doc/Jamfile.v2 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 8e6ec45..f598bb7 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -52,5 +52,8 @@ boostbook standalone pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/core/doc/html ; -alias boostdoc : standalone - : : : standalone ; +############################################################################### +alias boostdoc ; +explicit boostdoc ; +alias boostrelease : standalone ; +explicit boostrelease ; From b7f49c9c78dee18fec957a608b92a35e70f58b09 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sun, 6 Nov 2016 20:00:47 +0300 Subject: [PATCH 2/7] Use auto_ptr only when it is provided by the standard library. Improves compatibility with C++17. --- test/get_pointer_test.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/get_pointer_test.cpp b/test/get_pointer_test.cpp index edf4037..bf981cf 100644 --- a/test/get_pointer_test.cpp +++ b/test/get_pointer_test.cpp @@ -27,10 +27,12 @@ int main() delete p; } +#if !defined( BOOST_NO_AUTO_PTR ) { std::auto_ptr< X > p( new X ); BOOST_TEST( get_pointer( p ) == p.get() ); } +#endif #if !defined( BOOST_NO_CXX11_SMART_PTR ) From 5507006fc2b14d8b76b214808feb5f6801100827 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sun, 6 Nov 2016 20:57:05 +0300 Subject: [PATCH 3/7] Disabled warnings about signed/unsigned mismatch when using BOOST_TEST_EQ/BOOST_TEST_NE. --- include/boost/core/lightweight_test.hpp | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/include/boost/core/lightweight_test.hpp b/include/boost/core/lightweight_test.hpp index e0fc90b..d6db024 100644 --- a/include/boost/core/lightweight_test.hpp +++ b/include/boost/core/lightweight_test.hpp @@ -85,6 +85,22 @@ inline void throw_failed_impl(char const * excep, char const * file, int line, c ++test_errors(); } +// In the comparisons below, it is possible that T and U are signed and unsigned integer types, which generates warnings in some compilers. +// A cleaner fix would require common_type trait or some meta-programming, which would introduce a dependency on Boost.TypeTraits. To avoid +// the dependency we just disable the warnings. +#if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable: 4389) +#elif defined(__clang__) && defined(__has_warning) +# if __has_warning("-Wsign-compare") +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wsign-compare" +# endif +#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-compare" +#endif + template inline void test_eq_impl( char const * expr1, char const * expr2, char const * file, int line, char const * function, T const & t, U const & u ) { @@ -119,6 +135,16 @@ template inline void test_ne_impl( char const * expr1, char co } } +#if defined(_MSC_VER) +# pragma warning(pop) +#elif defined(__clang__) && defined(__has_warning) +# if __has_warning("-Wsign-compare") +# pragma clang diagnostic pop +# endif +#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 +# pragma GCC diagnostic pop +#endif + } // namespace detail inline int report_errors() From c0f277a7d8396b6ec73c89a6fc94617435079d1e Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Mon, 7 Nov 2016 17:50:58 +0300 Subject: [PATCH 4/7] Silenced warnings about unused variables. --- test/explicit_operator_bool_compile_fail_conv_int.cpp | 1 + test/explicit_operator_bool_compile_fail_conv_pvoid.cpp | 1 + test/ref_rv_fail1.cpp | 1 + test/ref_rv_fail2.cpp | 1 + test/ref_rv_fail3.cpp | 1 + test/ref_rv_fail4.cpp | 1 + test/ref_rv_fail5.cpp | 1 + 7 files changed, 7 insertions(+) diff --git a/test/explicit_operator_bool_compile_fail_conv_int.cpp b/test/explicit_operator_bool_compile_fail_conv_int.cpp index 384f2ab..2664d5e 100644 --- a/test/explicit_operator_bool_compile_fail_conv_int.cpp +++ b/test/explicit_operator_bool_compile_fail_conv_int.cpp @@ -35,6 +35,7 @@ int main(int, char*[]) { checkable val; int n = val; + (void)n; return 0; } diff --git a/test/explicit_operator_bool_compile_fail_conv_pvoid.cpp b/test/explicit_operator_bool_compile_fail_conv_pvoid.cpp index 0c007ba..b7e7e03 100644 --- a/test/explicit_operator_bool_compile_fail_conv_pvoid.cpp +++ b/test/explicit_operator_bool_compile_fail_conv_pvoid.cpp @@ -35,6 +35,7 @@ int main(int, char*[]) { checkable val; void* p = val; + (void)p; return 0; } diff --git a/test/ref_rv_fail1.cpp b/test/ref_rv_fail1.cpp index a2e708d..1c0a2e6 100644 --- a/test/ref_rv_fail1.cpp +++ b/test/ref_rv_fail1.cpp @@ -15,6 +15,7 @@ int main() { boost::reference_wrapper r( 1 ); // this should produce an ERROR + (void)r; } #else diff --git a/test/ref_rv_fail2.cpp b/test/ref_rv_fail2.cpp index 7258411..8ce2680 100644 --- a/test/ref_rv_fail2.cpp +++ b/test/ref_rv_fail2.cpp @@ -13,4 +13,5 @@ int main() { boost::reference_wrapper r = boost::ref( 2 ); // this should produce an ERROR + (void)r; } diff --git a/test/ref_rv_fail3.cpp b/test/ref_rv_fail3.cpp index fff6508..14b39b8 100644 --- a/test/ref_rv_fail3.cpp +++ b/test/ref_rv_fail3.cpp @@ -19,6 +19,7 @@ X const crv() { return X(); } int main() { boost::reference_wrapper r = boost::ref( crv() ); // this should produce an ERROR + (void)r; } #else diff --git a/test/ref_rv_fail4.cpp b/test/ref_rv_fail4.cpp index 7f49123..899de7b 100644 --- a/test/ref_rv_fail4.cpp +++ b/test/ref_rv_fail4.cpp @@ -16,6 +16,7 @@ int main() { boost::reference_wrapper r = boost::cref( 2 ); // should fail + (void)r; } #else diff --git a/test/ref_rv_fail5.cpp b/test/ref_rv_fail5.cpp index 84bc467..ed18edf 100644 --- a/test/ref_rv_fail5.cpp +++ b/test/ref_rv_fail5.cpp @@ -20,6 +20,7 @@ X const crv() { return X(); } int main() { boost::reference_wrapper r = boost::cref( crv() ); // must fail + (void)r; } #else From 1abd68102d26d87109b5eda8d80f8bb0382ce4df Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Wed, 11 Jan 2017 22:25:31 +0300 Subject: [PATCH 5/7] Simplified demangle() a little to make better use of RVO. --- include/boost/core/demangle.hpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/include/boost/core/demangle.hpp b/include/boost/core/demangle.hpp index f13c26a..dc714d8 100644 --- a/include/boost/core/demangle.hpp +++ b/include/boost/core/demangle.hpp @@ -93,15 +93,10 @@ inline void demangle_free( char const * name ) BOOST_NOEXCEPT inline std::string demangle( char const * name ) { scoped_demangled_name demangled_name( name ); - char const * const p = demangled_name.get(); - if( p ) - { - return p; - } - else - { - return name; - } + char const * p = demangled_name.get(); + if( !p ) + p = name; + return p; } #else From f7183714c1661b3a1e84120091d634e6ad6d18d6 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 30 Jan 2017 16:03:38 +0200 Subject: [PATCH 6/7] Expand platform coverage in .travis.yml --- .travis.yml | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6b7ec2f..88f523b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,106 @@ branches: - master - develop +env: + matrix: + - BOGUS_JOB=true + +addons: + apt: + packages: + - g++-4.7 + - g++-4.8 + - g++-4.9 + - g++-5 + - g++-6 + - clang-3.6 + - clang-3.7 + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise + - llvm-toolchain-precise-3.6 + - llvm-toolchain-precise-3.7 + - llvm-toolchain-precise-3.8 + +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 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z + + - 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.6 CXXSTD=c++03 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++03 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++03 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++1z + + - 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 + install: - cd .. - git clone -b $TRAVIS_BRANCH https://github.com/boostorg/boost.git boost-root @@ -31,8 +131,8 @@ install: - ./b2 headers script: - - TOOLSET=gcc,clang - - if [ $TRAVIS_OS_NAME == osx ]; then TOOLSET=clang; fi + - |- + echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - ./b2 libs/core/test toolset=$TOOLSET notifications: From fa88cc32cfd39645a087365bffb81f1b1514899b Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 30 Jan 2017 17:51:39 +0200 Subject: [PATCH 7/7] The build-in clang++ fails in c++11 mode with g++-6 installed for some reason --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 88f523b..a74c257 100644 --- a/.travis.yml +++ b/.travis.yml @@ -79,9 +79,6 @@ matrix: - 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.6 CXXSTD=c++03