mirror of
https://github.com/boostorg/config.git
synced 2025-07-29 20:07:17 +02:00
defect macro for C++17 feature std::invoke()
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
#
|
||||
# *** DO NOT EDIT THIS FILE BY HAND ***
|
||||
# This file was automatically generated on Fri Jul 1 18:47:25 2016
|
||||
# This file was automatically generated on Fri Oct 14 20:08:50 2016
|
||||
# by libs/config/tools/generate.cpp
|
||||
# Copyright John Maddock.
|
||||
# Use, modification and distribution are subject to the
|
||||
@ -131,6 +131,7 @@ run-simple <define>TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES : cxx14_initi
|
||||
run-simple <define>TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI : cxx14_aggregate_nsdmi ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION : cxx14_return_type_deduction ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES : cxx14_variable_templates ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX17_STD_INVOKE : cxx17_std_invoke ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL : cxx11_hdr_functional ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX11_DECLTYPE : cxx11_decltype ;
|
||||
run-simple <define>TEST_BOOST_NO_CXX11_DECLTYPE_N3276 : cxx11_decltype_n3276 ;
|
||||
|
@ -1,4 +1,4 @@
|
||||
// This file was automatically generated on Fri Jul 1 18:47:25 2016
|
||||
// This file was automatically generated on Fri Oct 14 20:08:50 2016
|
||||
// by libs/config/tools/generate.cpp
|
||||
// Copyright John Maddock 2002-4.
|
||||
// Use, modification and distribution are subject to the
|
||||
@ -457,6 +457,10 @@ namespace test = boost_no_cxx14_return_type_deduction;
|
||||
# include "../test/boost_no_cxx14_var_templ.ipp"
|
||||
namespace test = boost_no_cxx14_variable_templates;
|
||||
#endif
|
||||
#ifdef TEST_BOOST_NO_CXX17_STD_INVOKE
|
||||
# include "../test/boost_no_cxx17_std_invoke.ipp"
|
||||
namespace test = boost_no_cxx17_std_invoke;
|
||||
#endif
|
||||
#ifdef TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||
# include "../test/boost_no_cxx_hdr_functional.ipp"
|
||||
namespace test = boost_no_cxx11_hdr_functional;
|
||||
|
@ -924,6 +924,18 @@ provide compliant C++14 support.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Macros that describe C++17 features not supported]
|
||||
|
||||
The following macros describe features in the 2016 ISO C++ standard, formerly known as C++1z,
|
||||
that are not yet supported by a particular compiler or library.
|
||||
|
||||
[table
|
||||
[[Macro ][Description ]]
|
||||
[[`BOOST_NO_CXX17_STD_IVOKE`][The compiler does not support `std::invoke()`.]]
|
||||
]
|
||||
|
||||
[endsect]
|
||||
|
||||
[#config_helpers]
|
||||
|
||||
[section Boost Helper Macros]
|
||||
|
@ -157,6 +157,11 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
#elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400)
|
||||
// Intel's compiler can't handle this header yet:
|
||||
# define BOOST_NO_CXX11_HDR_ATOMIC
|
||||
|
@ -72,6 +72,9 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
//
|
||||
// Intrinsic type_traits support.
|
||||
// The SGI STL has it's own __type_traits class, which
|
||||
|
@ -73,6 +73,8 @@
|
||||
#if _LIBCPP_VERSION < 3700
|
||||
// libc++ uses a non-standard messages_base
|
||||
#define BOOST_NO_STD_MESSAGES
|
||||
// C++17 features
|
||||
#define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
|
||||
#if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
|
||||
|
@ -98,6 +98,7 @@
|
||||
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
|
||||
# define BOOST_LIBSTDCXX11
|
||||
#endif
|
||||
|
||||
//
|
||||
// Decide which version of libstdc++ we have, normally
|
||||
// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
|
||||
@ -122,7 +123,11 @@
|
||||
//
|
||||
#ifdef __clang__
|
||||
|
||||
#if __has_include(<experimental/any>)
|
||||
#include <functional>
|
||||
|
||||
#if defined(__cpp_lib_invoke) && (__cpp_lib_invoke >= 201411)
|
||||
# define BOOST_LIBSTDCXX_VERSION 60100
|
||||
#elif __has_include(<experimental/any>)
|
||||
# define BOOST_LIBSTDCXX_VERSION 50100
|
||||
#elif __has_include(<shared_mutex>)
|
||||
# define BOOST_LIBSTDCXX_VERSION 40900
|
||||
@ -139,6 +144,7 @@
|
||||
#elif __has_include(<array>)
|
||||
# define BOOST_LIBSTDCXX_VERSION 40300
|
||||
#endif
|
||||
|
||||
//
|
||||
// GCC 4.8 and 9 add working versions of <atomic> and <regex> respectively.
|
||||
// However, we have no test for these as the headers were present but broken
|
||||
@ -251,6 +257,13 @@
|
||||
# define BOOST_NO_CXX11_STD_ALIGN
|
||||
#endif
|
||||
|
||||
//
|
||||
// C++17 features in GCC 6.1 and later
|
||||
//
|
||||
#if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
|
||||
#if defined(__has_include)
|
||||
#if !__has_include(<shared_mutex>)
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
|
@ -61,6 +61,9 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
#define BOOST_STDLIB "Modena C++ standard library"
|
||||
|
||||
|
||||
|
@ -85,4 +85,7 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
|
||||
|
@ -196,3 +196,6 @@
|
||||
#else
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
@ -155,4 +155,7 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
#define BOOST_STDLIB "SGI standard library"
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
#define BOOST_STDLIB "SGI standard library"
|
||||
|
@ -245,4 +245,7 @@ namespace boost { using std::min; using std::max; }
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
|
||||
|
@ -61,4 +61,7 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
|
||||
#define BOOST_STDLIB "Visual Age default standard library"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Regression test Jamfile for boost configuration setup.
|
||||
# *** DO NOT EDIT THIS FILE BY HAND ***
|
||||
# This file was automatically generated on Fri Jul 1 18:47:25 2016
|
||||
# This file was automatically generated on Fri Oct 14 20:08:50 2016
|
||||
# by libs/config/tools/generate.cpp
|
||||
# Copyright John Maddock.
|
||||
# Use, modification and distribution are subject to the
|
||||
@ -358,6 +358,9 @@ test-suite "BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION" :
|
||||
test-suite "BOOST_NO_CXX14_VARIABLE_TEMPLATES" :
|
||||
[ run ../no_cxx14_var_templ_pass.cpp ]
|
||||
[ compile-fail ../no_cxx14_var_templ_fail.cpp ] ;
|
||||
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_CXX11_HDR_FUNCTIONAL" :
|
||||
[ run ../no_cxx_hdr_functional_pass.cpp ]
|
||||
[ compile-fail ../no_cxx_hdr_functional_fail.cpp ] ;
|
||||
|
27
test/boost_no_cxx17_std_invoke.ipp
Normal file
27
test/boost_no_cxx17_std_invoke.ipp
Normal file
@ -0,0 +1,27 @@
|
||||
// (C) Copyright Oliver Kowalke 2016.
|
||||
// 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_CXX17_STD_INVOKE
|
||||
// TITLE: invoke
|
||||
// DESCRIPTION: The compiler supports the std::invoke() function.
|
||||
|
||||
#include <functional>
|
||||
|
||||
namespace boost_no_cxx17_std_invoke {
|
||||
|
||||
int foo( int i, int j) {
|
||||
return i + j;
|
||||
}
|
||||
|
||||
int test() {
|
||||
int i = 1, j = 2;
|
||||
std::invoke( foo, i, j);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1074,6 +1074,7 @@ void print_boost_macros()
|
||||
PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES);
|
||||
PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION);
|
||||
PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
|
||||
PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE);
|
||||
PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
|
||||
PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
|
||||
PRINT_MACRO(BOOST_NO_EXCEPTIONS);
|
||||
@ -1141,6 +1142,9 @@ void print_boost_macros()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// END GENERATED BLOCK
|
||||
|
||||
PRINT_MACRO(BOOST_INTEL);
|
||||
|
@ -1,4 +1,4 @@
|
||||
// This file was automatically generated on Fri Jul 1 18:47:25 2016
|
||||
// This file was automatically generated on Fri Oct 14 20:08:50 2016
|
||||
// by libs/config/tools/generate.cpp
|
||||
// Copyright John Maddock 2002-4.
|
||||
// Use, modification and distribution are subject to the
|
||||
@ -317,6 +317,11 @@ namespace boost_no_cxx14_return_type_deduction = empty_boost;
|
||||
#else
|
||||
namespace boost_no_cxx14_variable_templates = empty_boost;
|
||||
#endif
|
||||
#ifndef BOOST_NO_CXX17_STD_INVOKE
|
||||
#include "boost_no_cxx17_std_invoke.ipp"
|
||||
#else
|
||||
namespace boost_no_cxx17_std_invoke = empty_boost;
|
||||
#endif
|
||||
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||
#include "boost_no_cxx_hdr_functional.ipp"
|
||||
#else
|
||||
@ -1561,6 +1566,11 @@ int main( int, char *[] )
|
||||
std::cerr << "Failed test for BOOST_NO_CXX14_VARIABLE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
||||
++error_count;
|
||||
}
|
||||
if(0 != boost_no_cxx17_std_invoke::test())
|
||||
{
|
||||
std::cerr << "Failed test for BOOST_NO_CXX17_STD_INVOKE 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;
|
||||
|
37
test/no_cxx17_std_invoke_fail.cpp
Normal file
37
test/no_cxx17_std_invoke_fail.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
// This file was automatically generated on Fri Oct 14 12:13:46 2016
|
||||
// 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_CXX17_STD_INVOKE
|
||||
// This file should not compile, if it does then
|
||||
// BOOST_NO_STD_INVOKE should not be defined.
|
||||
// See file boost_no_cxx17_std_invoke.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_CXX17_STD_INVOKE
|
||||
#include "boost_no_cxx17_std_invoke.ipp"
|
||||
#else
|
||||
#error "this file should not compile"
|
||||
#endif
|
||||
|
||||
int main( int, char *[] )
|
||||
{
|
||||
return boost_no_cxx17_std_invoke::test();
|
||||
}
|
||||
|
37
test/no_cxx17_std_invoke_pass.cpp
Normal file
37
test/no_cxx17_std_invoke_pass.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
// This file was automatically generated on Fri Oct 14 12:13:46 2016
|
||||
// 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_CXX17_STD_INVOKE
|
||||
// This file should compile, if it does not then
|
||||
// BOOST_NO_STD_INVOKE should be defined.
|
||||
// See file boost_no_cxx17_std_invoke.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_CXX17_STD_INVOKE
|
||||
#include "boost_no_cxx17_std_invoke.ipp"
|
||||
#else
|
||||
namespace boost_no_cxx17_std_invoke = empty_boost;
|
||||
#endif
|
||||
|
||||
int main( int, char *[] )
|
||||
{
|
||||
return boost_no_cxx17_std_invoke::test();
|
||||
}
|
||||
|
Reference in New Issue
Block a user