// Copyright 2015 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 struct X1 {}; struct X2 {}; struct X3 {}; struct X4 {}; struct Y1 {}; struct Y2 {}; struct Y3 {}; struct Y4 {}; struct Z1 {}; struct Z2 {}; struct Z3 {}; struct Z4 {}; struct U1 {}; struct U2 {}; struct V1 {}; struct V2 {}; struct W1 {}; struct W2 {}; template using add_pointer = typename std::add_pointer::type; template using is_same = typename std::is_same::type; int main() { using boost::mp11::mp_list; using boost::mp11::mp_transform; using L1 = mp_list; BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::add_pointer, std::add_pointer, std::add_pointer>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); using L2 = std::tuple; BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::pair, std::pair, std::pair>>)); using L3 = mp_list; BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, mp_list, mp_list, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list, std::tuple, std::tuple, std::tuple>>)); // using L4 = std::tuple; BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, mp_list>)); // using L5 = std::pair; using L6 = std::pair; using L7 = std::pair; BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, mp_list>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair>)); // using L8 = std::pair; using L9 = std::pair; using L10 = std::pair; using L11 = std::pair; BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, std::tuple>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, std::tuple>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::pair, std::tuple>>)); // return boost::report_errors(); }