// 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 #include #include #include #include MPL_TEST_CASE() { 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 )); } namespace test { struct foo { }; } // namespace test MPL_TEST_CASE() { 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 )); } #include MPL_TEST_CASE() { 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 )); } #if !defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) #include MPL_TEST_CASE() { 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_NO_CXX11_HDR_FUNCTIONAL