diff options
Diffstat (limited to 'boost/type_traits/is_nothrow_move_constructible.hpp')
-rw-r--r-- | boost/type_traits/is_nothrow_move_constructible.hpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/boost/type_traits/is_nothrow_move_constructible.hpp b/boost/type_traits/is_nothrow_move_constructible.hpp index b8a657a51c..c09d5d1f94 100644 --- a/boost/type_traits/is_nothrow_move_constructible.hpp +++ b/boost/type_traits/is_nothrow_move_constructible.hpp @@ -12,6 +12,7 @@ #define BOOST_TT_IS_NOTHROW_MOVE_CONSTRUCTIBLE_HPP_INCLUDED #include <boost/config.hpp> +#include <boost/type_traits/intrinsics.hpp> #include <boost/type_traits/has_trivial_move_constructor.hpp> #include <boost/type_traits/has_nothrow_copy.hpp> #include <boost/type_traits/is_array.hpp> @@ -28,7 +29,25 @@ namespace boost { namespace detail{ -#if !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) +#ifdef BOOST_IS_NOTHROW_MOVE_CONSTRUCT + +template <class T> +struct is_nothrow_move_constructible_imp{ + BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_NOTHROW_MOVE_CONSTRUCT(T)); +}; + +template <class T> +struct is_nothrow_move_constructible_imp<volatile T> : public ::boost::false_type {}; +template <class T> +struct is_nothrow_move_constructible_imp<const volatile T> : public ::boost::false_type{}; +template <class T> +struct is_nothrow_move_constructible_imp<T&> : public ::boost::false_type{}; +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +template <class T> +struct is_nothrow_move_constructible_imp<T&&> : public ::boost::false_type{}; +#endif + +#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) template <class T, class Enable = void> struct false_or_cpp11_noexcept_move_constructible: public ::boost::false_type {}; |