// Copyright 2015, 2017 Peter Dimov. // // 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 struct X1 {}; struct X2 {}; struct X3 {}; struct X4 {}; using boost::mp11::mp_not; template using add_pointer = T*; template using is_not_ref = mp_not>; template using second = T2; template using third = T3; template using fourth = T4; template using fifth = T5; int main() { using boost::mp11::mp_list; using boost::mp11::mp_transform_if; using boost::mp11::mp_size_t; using boost::mp11::mp_size; using boost::mp11::mp_fill; using boost::mp11::mp_iota; using L1 = mp_list; BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); using L2 = std::tuple; BOOST_TEST_TRAIT_TRUE((std::is_same, std::tuple>)); using L3 = std::pair; BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); // BOOST_TEST_TRAIT_TRUE((std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same>, std::pair>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, mp_list, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::tuple, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::pair, X2&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, mp_list, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::tuple, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::pair, X2&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, mp_list, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::tuple, X2&, mp_size_t<2>, X4 const&>>)); BOOST_TEST_TRAIT_TRUE((std::is_same>>, std::pair, X2&>>)); // return boost::report_errors(); }