// Copyright 2015 Peter Dimov. // Copyright 2019 Kris Jusiak. // // 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 using boost::mp11::mp_bool; template using Eq1 = mp_bool< T::value == U::value >; template using Eq2 = mp_bool< sizeof(T) == sizeof(U) >; int main() { using boost::mp11::mp_list; using boost::mp11::mp_unique_if; { BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list<>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, mp_list>)); } { BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple<>>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, std::is_same>, std::tuple>)); } { using boost::mp11::mp_iota_c; using boost::mp11::mp_size_t; using L1 = mp_iota_c<32>; using R1 = mp_unique_if; BOOST_TEST_TRAIT_TRUE((std::is_same)); #if !BOOST_MP11_WORKAROUND( BOOST_MSVC, < 1910 ) using R2 = mp_unique_if; BOOST_TEST_TRAIT_TRUE((std::is_same)); using R3 = mp_unique_if; BOOST_TEST_TRAIT_TRUE((std::is_same>>)); #endif } { using boost::mp11::mp_list_c; using boost::mp11::mp_append; using boost::mp11::mp_push_back; using boost::mp11::mp_int; using L1 = mp_list_c; using L2 = mp_list_c; using L3 = mp_list_c; #if !BOOST_MP11_WORKAROUND( BOOST_MSVC, < 1910 ) using R1 = mp_unique_if, Eq1>; BOOST_TEST_TRAIT_TRUE((std::is_same, std::integral_constant>>)); #endif } { #if !BOOST_MP11_WORKAROUND( BOOST_MSVC, < 1910 ) BOOST_TEST_TRAIT_TRUE((std::is_same, Eq2>, std::tuple>)); BOOST_TEST_TRAIT_TRUE((std::is_same, Eq2>, std::tuple>)); #endif } return boost::report_errors(); }