From 83756139b2983b2e1df82b9615859aca2b898cf2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 6 Mar 2023 04:51:04 +0200 Subject: [PATCH] C++20 removes std::raw_storage_iterator, unary_negate, binary_negate --- include/boost/typeof/std/functional.hpp | 7 ++++++- include/boost/typeof/std/memory.hpp | 7 ++++++- test/std.cpp | 5 +++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/boost/typeof/std/functional.hpp b/include/boost/typeof/std/functional.hpp index 6d3d00d..9fdbba4 100644 --- a/include/boost/typeof/std/functional.hpp +++ b/include/boost/typeof/std/functional.hpp @@ -5,8 +5,9 @@ #ifndef BOOST_TYPEOF_STD_functional_hpp_INCLUDED #define BOOST_TYPEOF_STD_functional_hpp_INCLUDED -#include #include +#include +#include #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() @@ -14,6 +15,7 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_function, 2) BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_function, 3) #endif//BOOST_NO_CXX98_FUNCTION_BASE + BOOST_TYPEOF_REGISTER_TEMPLATE(std::plus, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::minus, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiplies, 1) @@ -29,8 +31,11 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::less_equal, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_and, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_or, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_not, 1) + +#if BOOST_CXX_VERSION < 202000L BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_negate, 1) BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_negate, 1) +#endif #ifndef BOOST_NO_CXX98_BINDERS diff --git a/include/boost/typeof/std/memory.hpp b/include/boost/typeof/std/memory.hpp index ad4c2c1..7c1510f 100644 --- a/include/boost/typeof/std/memory.hpp +++ b/include/boost/typeof/std/memory.hpp @@ -5,13 +5,18 @@ #ifndef BOOST_TYPEOF_STD_memory_hpp_INCLUDED #define BOOST_TYPEOF_STD_memory_hpp_INCLUDED -#include #include +#include +#include #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() BOOST_TYPEOF_REGISTER_TEMPLATE(std::allocator, 1) + +#if BOOST_CXX_VERSION < 202000L BOOST_TYPEOF_REGISTER_TEMPLATE(std::raw_storage_iterator, 2) +#endif + #ifndef BOOST_NO_AUTO_PTR BOOST_TYPEOF_REGISTER_TEMPLATE(std::auto_ptr, 1) #endif//BOOST_NO_AUTO_PTR diff --git a/test/std.cpp b/test/std.cpp index 19aac08..e77d803 100644 --- a/test/std.cpp +++ b/test/std.cpp @@ -46,6 +46,7 @@ BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT((boost::type_of::test >::value)); BOOST_STATIC_ASSERT((boost::type_of::test >::value)); #endif//BOOST_NO_CXX98_FUNCTION_BASE + BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT(boost::type_of::test >::value); @@ -61,8 +62,12 @@ BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT(boost::type_of::test >::value); BOOST_STATIC_ASSERT(boost::type_of::test >::value); + +#if BOOST_CXX_VERSION < 202000L BOOST_STATIC_ASSERT(boost::type_of::test > >::value); BOOST_STATIC_ASSERT(boost::type_of::test > >::value); +#endif + #ifndef BOOST_NO_CXX98_BINDERS BOOST_STATIC_ASSERT(boost::type_of::test > >::value); BOOST_STATIC_ASSERT(boost::type_of::test > >::value);