diff --git a/include/boost/type_traits/is_destructible.hpp b/include/boost/type_traits/is_destructible.hpp index 7f266a9..36fc626 100644 --- a/include/boost/type_traits/is_destructible.hpp +++ b/include/boost/type_traits/is_destructible.hpp @@ -32,8 +32,6 @@ namespace boost{ } template struct is_destructible : public integral_constant(0)) == sizeof(boost::type_traits::yes_type)>{}; - template struct is_destructible : public is_destructible{}; - template struct is_destructible : public is_destructible{}; #else @@ -50,6 +48,12 @@ namespace boost{ template <> struct is_destructible : public false_type{}; template <> struct is_destructible : public false_type{}; template <> struct is_destructible : public false_type{}; + template struct is_destructible : public is_destructible{}; +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + template struct is_destructible : public is_destructible{}; +#endif + template struct is_destructible : public is_destructible{}; + template struct is_destructible : public is_destructible{}; } // namespace boost diff --git a/test/is_destructible_test.cpp b/test/is_destructible_test.cpp index a4f58ba..872f21b 100644 --- a/test/is_destructible_test.cpp +++ b/test/is_destructible_test.cpp @@ -151,6 +151,19 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_destructible::value, true); +#endif // // These are commented out for now because it's not clear what the semantics should be: