Add more macros for removed std lib features:

BOOST_NO_CXX98_FUNCTION_BASE
BOOST_NO_CXX98_BINDERS
Added new documentation section for features that have been removed from the standard.
This commit is contained in:
jzmaddock
2017-04-17 18:41:44 +01:00
parent 5193948558
commit 0e364efe0b
16 changed files with 387 additions and 5 deletions

View File

@@ -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 : <define>TEST_BOOST_NO_CXX14_STD_EXCHANG
obj cxx14_variable_templates : test_case.cpp : <define>TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ;
obj cxx17_std_apply : test_case.cpp : <define>TEST_BOOST_NO_CXX17_STD_APPLY ;
obj cxx17_std_invoke : test_case.cpp : <define>TEST_BOOST_NO_CXX17_STD_INVOKE ;
obj cxx98_binders : test_case.cpp : <define>TEST_BOOST_NO_CXX98_BINDERS ;
obj cxx98_function_base : test_case.cpp : <define>TEST_BOOST_NO_CXX98_FUNCTION_BASE ;
obj cxx98_random_shuffle : test_case.cpp : <define>TEST_BOOST_NO_CXX98_RANDOM_SHUFFLE ;
obj cxx11_hdr_functional : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL ;
obj cxx11_decltype : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DECLTYPE ;
obj cxx11_decltype_n3276 : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DECLTYPE_N3276 ;

View File

@@ -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."

View File

@@ -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]

View File

@@ -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

View File

@@ -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 ] ;

View File

@@ -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 <functional>
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);
}
}

View File

@@ -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 <functional>
namespace boost_no_cxx98_function_base{
struct A : public std::unary_function<int, int>{};
struct B : public std::binary_function<int, int, int>{};
int test()
{
A a;
B b;
(void)a;
(void)b;
return static_cast<B::result_type>(0);
}
}

View File

@@ -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 <algorithm>
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;
}
}

View File

@@ -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()

View File

@@ -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;

View File

@@ -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 <boost/config.hpp>
#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();
}

View File

@@ -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 <boost/config.hpp>
#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();
}

View File

@@ -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 <boost/config.hpp>
#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();
}

View File

@@ -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 <boost/config.hpp>
#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();
}

View File

@@ -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 <boost/config.hpp>
#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();
}

View File

@@ -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 <boost/config.hpp>
#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();
}