Skip to content

Commit

Permalink
Add more macros for removed std lib features:
Browse files Browse the repository at this point in the history
BOOST_NO_CXX98_FUNCTION_BASE
BOOST_NO_CXX98_BINDERS
Added new documentation section for features that have been removed from the standard.
  • Loading branch information
jzmaddock committed Apr 17, 2017
1 parent 5193948 commit 0e364ef
Show file tree
Hide file tree
Showing 16 changed files with 387 additions and 5 deletions.
5 changes: 4 additions & 1 deletion checks/Jamfile.v2
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 ;
Expand Down
17 changes: 16 additions & 1 deletion checks/test_case.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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."
Expand Down
15 changes: 14 additions & 1 deletion doc/macro_reference.qbk
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 2 additions & 0 deletions include/boost/config/stdlib/dinkumware.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
11 changes: 10 additions & 1 deletion test/all/Jamfile.v2
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 ] ;
Expand Down
30 changes: 30 additions & 0 deletions test/boost_no_cxx98_binders.ipp
Original file line number Diff line number Diff line change
@@ -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);
}

}
28 changes: 28 additions & 0 deletions test/boost_no_cxx98_function_base.ipp
Original file line number Diff line number Diff line change
@@ -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);
}

}
23 changes: 23 additions & 0 deletions test/boost_no_cxx98_random_shuffle.ipp
Original file line number Diff line number Diff line change
@@ -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;
}

}
7 changes: 7 additions & 0 deletions test/config_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -1153,6 +1156,10 @@ void print_boost_macros()










Expand Down
32 changes: 31 additions & 1 deletion test/config_test.cpp
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
37 changes: 37 additions & 0 deletions test/no_cxx98_binders_fail.cpp
Original file line number Diff line number Diff line change
@@ -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();
}

37 changes: 37 additions & 0 deletions test/no_cxx98_binders_pass.cpp
Original file line number Diff line number Diff line change
@@ -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();
}

37 changes: 37 additions & 0 deletions test/no_cxx98_function_base_fail.cpp
Original file line number Diff line number Diff line change
@@ -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();
}

Loading

3 comments on commit 0e364ef

@DanielaE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK, the removal of old deprecated library features is a C++17 thing, not C++14.

@jzmaddock
Copy link
Collaborator Author

@jzmaddock jzmaddock commented on 0e364ef Apr 18, 2017 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DanielaE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. 'This International Standard' is C++17 (DIS N4618.pdf). The request for removal from the (then next) standard was N4190 by STL, date 2014-10-09, i.e. after finalization of C++14 in august 2014 (publication in december)

Please sign in to comment.