// Copyright David Abrahams 2005. // Distributed under 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) #include #include #include #if defined(BOOST_PARAMETER_CAN_USE_MP11) #include #else #include #include #include #include #endif MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference::type , int >::value , "unwrap_cv_reference::type == int" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference::type , int const >::value , "unwrap_cv_reference::type == int const" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference::type , int volatile >::value , "unwrap_cv_reference::type == int volatile" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< int const volatile >::type , int const volatile >::value , "unwrap_cv_reference::type == int cv" ); #else // !defined(BOOST_PARAMETER_CAN_USE_MP11) BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference::type , int > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference::type , int const > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference::type , int volatile > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< int const volatile >::type , int const volatile > , boost::mpl::true_ , boost::mpl::false_ >::type )); #endif // BOOST_PARAMETER_CAN_USE_MP11 } namespace test { struct foo { }; } // namespace test MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference::type , test::foo const >::value , "unwrap_cv_reference::type == test::foo const" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< test::foo volatile >::type , test::foo volatile >::value , "unwrap_cv_reference::type == test::foo volatile" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< test::foo const volatile >::type , test::foo const volatile >::value , "unwrap_cv_reference::type == test::foo cv" ); #else // !defined(BOOST_PARAMETER_CAN_USE_MP11) BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< test::foo const >::type , test::foo const > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< test::foo volatile >::type , test::foo volatile > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< test::foo const volatile >::type , test::foo const volatile > , boost::mpl::true_ , boost::mpl::false_ >::type )); #endif // BOOST_PARAMETER_CAN_USE_MP11 } #include MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper const >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper volatile >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper const volatile >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); #else // !defined(BOOST_PARAMETER_CAN_USE_MP11) BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper const >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper volatile >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper const volatile >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); #endif // BOOST_PARAMETER_CAN_USE_MP11 } #if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) #include MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper const >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper volatile >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper const volatile >::type , test::foo >::value , "unwrap_cv_reference::type == test::foo" ); #else // !defined(BOOST_PARAMETER_CAN_USE_MP11) BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper const >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper volatile >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper const volatile >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); #endif // BOOST_PARAMETER_CAN_USE_MP11 } #endif // BOOST_NO_CXX11_HDR_FUNCTIONAL