Merge pull request #27 from boostorg/drop-cpp03

Drop c++03 support
This commit is contained in:
Antony Polukhin
2023-08-12 10:45:01 +03:00
committed by GitHub
7 changed files with 30 additions and 94 deletions

View File

@ -14,9 +14,5 @@ target_link_libraries( boost_conversion
INTERFACE INTERFACE
Boost::assert Boost::assert
Boost::config Boost::config
Boost::core
Boost::smart_ptr
Boost::throw_exception Boost::throw_exception
Boost::type_traits
Boost::typeof
) )

View File

@ -11,22 +11,9 @@
# pragma once # pragma once
#endif #endif
#include <boost/config/pragma_message.hpp>
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || \
defined(BOOST_NO_CXX11_CONSTEXPR) || \
defined(BOOST_NO_CXX11_NULLPTR) || \
defined(BOOST_NO_CXX11_NOEXCEPT) || \
defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \
defined(BOOST_NO_CXX11_FINAL) || \
defined(BOOST_NO_CXX11_ALIGNOF) || \
defined(BOOST_NO_CXX11_STATIC_ASSERT) || \
defined(BOOST_NO_CXX11_SMART_PTR) || \
defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) || \
defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
BOOST_PRAGMA_MESSAGE("C++03 support is deprecated in Boost.Conversion 1.82 and will be removed in Boost.Conversion 1.84.")
#if defined(BOOST_NO_CXX11_CONSTEXPR)
#error C++03 support is removed in Boost.Conversion 1.84
#endif #endif
namespace boost { namespace boost {
@ -46,7 +33,7 @@ template<class T> struct icast_identity
// The use of identity creates a non-deduced form, so that the // The use of identity creates a non-deduced form, so that the
// explicit template argument must be supplied // explicit template argument must be supplied
template <typename T> template <typename T>
BOOST_CONSTEXPR inline T implicit_cast (typename boost::detail::icast_identity<T>::type x) { constexpr T implicit_cast (typename boost::detail::icast_identity<T>::type x) {
return x; return x;
} }

View File

@ -49,38 +49,24 @@
#ifndef BOOST_POLYMORPHIC_CAST_HPP #ifndef BOOST_POLYMORPHIC_CAST_HPP
#define BOOST_POLYMORPHIC_CAST_HPP #define BOOST_POLYMORPHIC_CAST_HPP
# include <boost/config.hpp> #include <boost/config/assert_cxx11.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE #ifdef BOOST_HAS_PRAGMA_ONCE
# pragma once # pragma once
#endif #endif
#include <boost/config/pragma_message.hpp>
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || \
defined(BOOST_NO_CXX11_CONSTEXPR) || \
defined(BOOST_NO_CXX11_NULLPTR) || \
defined(BOOST_NO_CXX11_NOEXCEPT) || \
defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \
defined(BOOST_NO_CXX11_FINAL) || \
defined(BOOST_NO_CXX11_ALIGNOF) || \
defined(BOOST_NO_CXX11_STATIC_ASSERT) || \
defined(BOOST_NO_CXX11_SMART_PTR) || \
defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) || \
defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
BOOST_PRAGMA_MESSAGE("C++03 support is deprecated in Boost.Conversion 1.82 and will be removed in Boost.Conversion 1.84.")
#if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
#error C++03 support is removed in Boost.Conversion 1.84
#endif #endif
# include <boost/assert.hpp>
# include <boost/core/addressof.hpp>
# include <boost/core/enable_if.hpp>
# include <boost/throw_exception.hpp>
# include <boost/type_traits/is_reference.hpp>
# include <boost/type_traits/remove_reference.hpp>
# include <boost/assert.hpp>
# include <boost/throw_exception.hpp>
# include <memory> // std::addressof
# include <typeinfo> # include <typeinfo>
# include <type_traits>
namespace boost namespace boost
{ {
@ -129,13 +115,13 @@ namespace boost
// Contributed by Julien Delacroix // Contributed by Julien Delacroix
template <class Target, class Source> template <class Target, class Source>
inline typename boost::enable_if_c< inline typename std::enable_if<
boost::is_reference<Target>::value, Target std::is_reference<Target>::value, Target
>::type polymorphic_downcast(Source& x) >::type polymorphic_downcast(Source& x)
{ {
typedef typename boost::remove_reference<Target>::type* target_pointer_type; typedef typename std::remove_reference<Target>::type* target_pointer_type;
return *boost::polymorphic_downcast<target_pointer_type>( return *boost::polymorphic_downcast<target_pointer_type>(
boost::addressof(x) std::addressof(x)
); );
} }

View File

@ -15,31 +15,16 @@
# pragma once # pragma once
#endif #endif
#if defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) || defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || defined(BOOST_NO_CXX11_DECLTYPE)
#error C++03 support is removed in Boost.Conversion 1.84
#endif
# include <boost/assert.hpp> # include <boost/assert.hpp>
# include <boost/pointer_cast.hpp> # include <boost/pointer_cast.hpp>
# include <boost/throw_exception.hpp> # include <boost/throw_exception.hpp>
# include <boost/utility/declval.hpp>
# ifdef BOOST_NO_CXX11_DECLTYPE
# include <boost/typeof/typeof.hpp>
# endif
#include <boost/config/pragma_message.hpp> # include <utility> // std::declval
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \
defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) || \
defined(BOOST_NO_CXX11_CONSTEXPR) || \
defined(BOOST_NO_CXX11_NULLPTR) || \
defined(BOOST_NO_CXX11_NOEXCEPT) || \
defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || \
defined(BOOST_NO_CXX11_FINAL) || \
defined(BOOST_NO_CXX11_ALIGNOF) || \
defined(BOOST_NO_CXX11_STATIC_ASSERT) || \
defined(BOOST_NO_CXX11_SMART_PTR) || \
defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) || \
defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
BOOST_PRAGMA_MESSAGE("C++03 support is deprecated in Boost.Conversion 1.82 and will be removed in Boost.Conversion 1.84.")
#endif
namespace boost namespace boost
{ {
@ -62,19 +47,11 @@ namespace boost
namespace detail namespace detail
{ {
template <typename Target, typename Source> template <typename Target, typename Source>
struct dynamic_pointer_cast_result using dynamic_pointer_cast_result = decltype(dynamic_pointer_cast<Target>(std::declval<Source>()));
{
#ifdef BOOST_NO_CXX11_DECLTYPE
BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, dynamic_pointer_cast<Target>(boost::declval<Source>()))
typedef typename nested::type type;
#else
typedef decltype(dynamic_pointer_cast<Target>(boost::declval<Source>())) type;
#endif
};
} }
template <typename Target, typename Source> template <typename Target, typename Source>
inline typename detail::dynamic_pointer_cast_result<Target, Source>::type inline detail::dynamic_pointer_cast_result<Target, Source>
polymorphic_pointer_downcast (const Source& x) polymorphic_pointer_downcast (const Source& x)
{ {
BOOST_ASSERT(dynamic_pointer_cast<Target> (x) == x); BOOST_ASSERT(dynamic_pointer_cast<Target> (x) == x);
@ -82,13 +59,11 @@ namespace boost
} }
template <typename Target, typename Source> template <typename Target, typename Source>
inline typename detail::dynamic_pointer_cast_result<Target, Source>::type inline detail::dynamic_pointer_cast_result<Target, Source>
polymorphic_pointer_cast (const Source& x) polymorphic_pointer_cast (const Source& x)
{ {
typename detail::dynamic_pointer_cast_result<Target, Source>::type tmp auto tmp = dynamic_pointer_cast<Target> (x);
= dynamic_pointer_cast<Target> (x);
if ( !tmp ) boost::throw_exception( std::bad_cast() ); if ( !tmp ) boost::throw_exception( std::bad_cast() );
return tmp; return tmp;
} }

View File

@ -8,11 +8,11 @@
import testing ; import testing ;
import feature ; import feature ;
import ../../config/checks/config : requires ;
project project
: requirements : requirements
<toolset>gcc-4.7:<cxxflags>-ftrapv [ requires cxx11 ]
<toolset>gcc-4.6:<cxxflags>-ftrapv
<toolset>clang:<cxxflags>-ftrapv
# default to all warnings on: # default to all warnings on:
<warnings>all <warnings>all
# set warnings as errors for those compilers we know we get warning free: # set warnings as errors for those compilers we know we get warning free:

View File

@ -35,7 +35,7 @@ int main()
(void)z; (void)z;
BOOST_CONSTEXPR long value = boost::implicit_cast<long>(42); constexpr long value = boost::implicit_cast<long>(42);
BOOST_TEST(value == 42L); BOOST_TEST(value == 42L);
return boost::report_errors(); return boost::report_errors();

View File

@ -6,6 +6,7 @@
// Copyright 1999 Dave Abrahams // Copyright 1999 Dave Abrahams
// Copyright 2014 Peter Dimov // Copyright 2014 Peter Dimov
// Copyright 2014 Boris Rasin, Antony Polukhin // Copyright 2014 Boris Rasin, Antony Polukhin
// Copyright 2023 Antony Polukhin
// //
// Distributed under the Boost Software License, Version 1.0. // Distributed under the Boost Software License, Version 1.0.
// //
@ -237,8 +238,6 @@ static void test_polymorphic_pointer_downcast_intrusive()
} }
} }
#ifndef BOOST_NO_CXX11_SMART_PTR
static void test_polymorphic_pointer_downcast_std_shared() static void test_polymorphic_pointer_downcast_std_shared()
{ {
std::shared_ptr<Base> base (new Derived); std::shared_ptr<Base> base (new Derived);
@ -253,8 +252,6 @@ static void test_polymorphic_pointer_downcast_std_shared()
} }
} }
#endif
static void test_polymorphic_cast_fail() static void test_polymorphic_cast_fail()
{ {
Base * base = new Base; Base * base = new Base;
@ -272,9 +269,7 @@ static void test_polymorphic_pointer_cast_fail()
BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( boost::shared_ptr<Base>(new Base) ), std::bad_cast ); BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( boost::shared_ptr<Base>(new Base) ), std::bad_cast );
#ifndef BOOST_NO_CXX11_SMART_PTR
BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( std::shared_ptr<Base>(new Base) ), std::bad_cast ); BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( std::shared_ptr<Base>(new Base) ), std::bad_cast );
#endif
BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( boost::intrusive_ptr<Base>(new Base) ), std::bad_cast ); BOOST_TEST_THROWS( boost::polymorphic_pointer_cast<Derived>( boost::intrusive_ptr<Base>(new Base) ), std::bad_cast );
} }
@ -337,7 +332,6 @@ static void test_polymorphic_pointer_downcast_boost_shared_fail()
expect_assertion = false; expect_assertion = false;
} }
#ifndef BOOST_NO_CXX11_SMART_PTR
static void test_polymorphic_pointer_downcast_std_shared_fail() static void test_polymorphic_pointer_downcast_std_shared_fail()
{ {
@ -352,7 +346,6 @@ static void test_polymorphic_pointer_downcast_std_shared_fail()
expect_assertion = false; expect_assertion = false;
} }
#endif
static void test_polymorphic_pointer_downcast_intrusive_fail() static void test_polymorphic_pointer_downcast_intrusive_fail()
{ {
@ -382,10 +375,9 @@ int main()
test_polymorphic_pointer_downcast_boost_shared_fail(); test_polymorphic_pointer_downcast_boost_shared_fail();
test_polymorphic_pointer_downcast_intrusive_fail(); test_polymorphic_pointer_downcast_intrusive_fail();
#ifndef BOOST_NO_CXX11_SMART_PTR
test_polymorphic_pointer_downcast_std_shared(); test_polymorphic_pointer_downcast_std_shared();
test_polymorphic_pointer_downcast_std_shared_fail(); test_polymorphic_pointer_downcast_std_shared_fail();
#endif
return boost::report_errors(); return boost::report_errors();
} }