/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/parameter/test/deduced.cpp
181 строка
5 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// Copyright Daniel Wallin 2006. // 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/parameters.hpp> #include <boost/parameter/name.hpp> #include <boost/parameter/binding.hpp> #include <boost/parameter/config.hpp> #include "deduced.hpp" #if defined(BOOST_PARAMETER_CAN_USE_MP11) #include <type_traits> #else #include <boost/mpl/bool.hpp> #include <boost/mpl/if.hpp> #include <boost/type_traits/is_convertible.hpp> #endif #if defined(LIBS_PARAMETER_TEST_COMPILE_FAILURE) #include <boost/parameter/aux_/preprocessor/nullptr.hpp> #endif namespace test { BOOST_PARAMETER_NAME(x) BOOST_PARAMETER_NAME(y) BOOST_PARAMETER_NAME(z) template <typename To> struct predicate { template <typename From, typename Args> #if defined(BOOST_PARAMETER_CAN_USE_MP11) using fn = std::is_convertible<From,To>; #else struct apply : boost::mpl::if_< boost::is_convertible<From,To> , boost::mpl::true_ , boost::mpl::false_ > { }; #endif }; } // namespace test #include <boost/core/lightweight_test.hpp> #include <string> int main() { test::check< boost::parameter::parameters<test::tag::x,test::tag::y> >((test::_x = 0, test::_y = 1), 0, 1); test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( ( test::_x = 0 , test::_y = test::not_present , test::_z = std::string("foo") ) , test::_x = 0 , std::string("foo") ); test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( (test::_x = 0, test::_y = 1, test::_z = std::string("foo")) , 0 , std::string("foo") , 1 ); test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( (test::_x = 0, test::_y = 1, test::_z = std::string("foo")) , 0 , 1 , std::string("foo") ); test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( (test::_x = 0, test::_y = 1, test::_z = std::string("foo")) , 0 , test::_y = 1 , std::string("foo") ); test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( (test::_x = 0, test::_y = 1, test::_z = std::string("foo")) , test::_z = std::string("foo") , test::_x = 0 , 1 ); #if defined(LIBS_PARAMETER_TEST_COMPILE_FAILURE) // Fails because boost::parameter::aux::make_arg_list<> evaluates // boost::parameter::aux::is_named_argument<> to boost::mpl::false_ // for static_cast<long*>(BOOST_PARAMETER_AUX_PP_NULLPTR). test::check< boost::parameter::parameters< test::tag::x , boost::parameter::required< boost::parameter::deduced<test::tag::y> , test::predicate<int> > , boost::parameter::optional< boost::parameter::deduced<test::tag::z> , test::predicate<std::string> > > >( (test::_x = 0, test::_y = 1, test::_z = std::string("foo")) , test::_x = 0 , static_cast<long*>(BOOST_PARAMETER_AUX_PP_NULLPTR) , 1 ); #endif return boost::report_errors(); }