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(); +} +