/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/parameter/test/unwrap_cv_reference.cpp
377 строк
11 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// 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 <boost/parameter/aux_/unwrap_cv_reference.hpp> #include <boost/parameter/config.hpp> #include <boost/mpl/aux_/test.hpp> #if defined(BOOST_PARAMETER_CAN_USE_MP11) #include <type_traits> #else #include <boost/mpl/bool.hpp> #include <boost/mpl/if.hpp> #include <boost/mpl/assert.hpp> #include <boost/type_traits/is_same.hpp> #endif MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference<int>::type , int >::value , "unwrap_cv_reference<int>::type == int" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference<int const>::type , int const >::value , "unwrap_cv_reference<int const>::type == int const" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference<int volatile>::type , int volatile >::value , "unwrap_cv_reference<int volatile>::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<int cv>::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<int>::type , int > , boost::mpl::true_ , boost::mpl::false_ >::type )); BOOST_MPL_ASSERT(( boost::mpl::if_< boost::is_same< boost::parameter::aux::unwrap_cv_reference<int const>::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<int volatile>::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<test::foo>::type , test::foo >::value , "unwrap_cv_reference<test::foo>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference<test::foo const>::type , test::foo const >::value , "unwrap_cv_reference<test::foo const>::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<test::foo volatile>::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<test::foo cv>::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<test::foo>::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 <boost/ref.hpp> MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper<test::foo> >::type , test::foo >::value , "unwrap_cv_reference<ref(test::foo)>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper<test::foo> const >::type , test::foo >::value , "unwrap_cv_reference<ref(test::foo) const>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper<test::foo> volatile >::type , test::foo >::value , "unwrap_cv_reference<ref(test::foo) volatile>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< boost::reference_wrapper<test::foo> const volatile >::type , test::foo >::value , "unwrap_cv_reference<ref(test::foo) cv>::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<test::foo> >::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<test::foo> 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<test::foo> 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<test::foo> 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 <functional> MPL_TEST_CASE() { #if defined(BOOST_PARAMETER_CAN_USE_MP11) static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper<test::foo> >::type , test::foo >::value , "unwrap_cv_reference<std::ref(test::foo)>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper<test::foo> const >::type , test::foo >::value , "unwrap_cv_reference<std::ref(test::foo) const>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper<test::foo> volatile >::type , test::foo >::value , "unwrap_cv_reference<std::ref(test::foo) volatile>::type == test::foo" ); static_assert( std::is_same< boost::parameter::aux::unwrap_cv_reference< std::reference_wrapper<test::foo> const volatile >::type , test::foo >::value , "unwrap_cv_reference<std::ref(test::foo) cv>::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<test::foo> >::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<test::foo> 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<test::foo> 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<test::foo> const volatile >::type , test::foo > , boost::mpl::true_ , boost::mpl::false_ >::type )); #endif // BOOST_PARAMETER_CAN_USE_MP11 } #endif // BOOST_NO_CXX11_HDR_FUNCTIONAL