diff --git a/test/mp_fold.cpp b/test/mp_fold.cpp index 8db9cc9..5c84ede 100644 --- a/test/mp_fold.cpp +++ b/test/mp_fold.cpp @@ -21,7 +21,32 @@ struct X4 {}; template struct F {}; -using boost::mp11::mp_plus; +using boost::mp11::mp_size_t; + +struct W +{ + template void operator()( mp_size_t ) const + { + using boost::mp11::mp_iota_c; + using boost::mp11::mp_fold; + using boost::mp11::mp_list; + using boost::mp11::mp_push_back; + using boost::mp11::mp_push_front; + using boost::mp11::mp_reverse; + using boost::mp11::mp_plus; + + using L = mp_iota_c; + + using R1 = mp_fold, mp_push_back>; + BOOST_TEST_TRAIT_TRUE((std::is_same)); + + using R2 = mp_fold, mp_push_front>; + BOOST_TEST_TRAIT_TRUE((std::is_same>)); + + using R3 = mp_fold, mp_plus>; + BOOST_TEST_TRAIT_TRUE((std::is_same>)); + } +}; int main() { @@ -56,24 +81,18 @@ int main() BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list<>, mp_push_front>, mp_list>)); } + using boost::mp11::mp_for_each; using boost::mp11::mp_iota_c; - using boost::mp11::mp_reverse; - using boost::mp11::mp_size_t; - { - int const N = 37; +#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 ) - using L = mp_iota_c; + W()( mp_size_t<37>() ); - using R1 = mp_fold, mp_push_back>; - BOOST_TEST_TRAIT_TRUE((std::is_same)); +#else - using R2 = mp_fold, mp_push_front>; - BOOST_TEST_TRAIT_TRUE((std::is_same>)); + mp_for_each< mp_iota_c<38> >( W{} ); - using R3 = mp_fold, mp_plus>; - BOOST_TEST_TRAIT_TRUE((std::is_same>)); - } +#endif return boost::report_errors(); }