diff --git a/test/mp_unique_if_q.cpp b/test/mp_unique_if_q.cpp index 55805e3..c116aec 100644 --- a/test/mp_unique_if_q.cpp +++ b/test/mp_unique_if_q.cpp @@ -1,5 +1,5 @@ -// Copyright 2015 Peter Dimov. -// Copyright 2019 Kris Jusiak. +// Copyright 2015 Peter Dimov. +// Copyright 2019 Kris Jusiak. // // Distributed under the Boost Software License, Version 1.0. // @@ -9,42 +9,79 @@ #include #include +#include +#include #include #include #include -struct is_same_size +using boost::mp11::mp_bool; + +#if !BOOST_MP11_WORKAROUND( BOOST_MSVC, < 1910 ) + +struct Q1 { - template - struct impl : boost::mp11::mp_bool {}; - template using fn = typename impl::type; + template using fn = mp_bool< T::value == U::value >; }; +struct Q2 +{ + template using fn = mp_bool< sizeof(T) == sizeof(U) >; +}; + +#else + +struct Q1 +{ + template struct fn: mp_bool< T::value == U::value > {}; +}; + +struct Q2 +{ + template struct fn: mp_bool< sizeof(T) == sizeof(U) > {}; +}; + +#endif + int main() { using boost::mp11::mp_list; using boost::mp11::mp_unique_if_q; + using boost::mp11::mp_quote_trait; { - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list<>>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); - struct foo{}; - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, mp_list>)); + using boost::mp11::mp_iota_c; + using boost::mp11::mp_size_t; + + using L1 = mp_iota_c<32>; + + using R1 = mp_unique_if_q>; + BOOST_TEST_TRAIT_TRUE((std::is_same)); + + using R2 = mp_unique_if_q; + BOOST_TEST_TRAIT_TRUE((std::is_same)); + + using R3 = mp_unique_if_q; + BOOST_TEST_TRAIT_TRUE((std::is_same>>)); } { - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple<>>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); - struct foo{}; - BOOST_TEST_TRAIT_TRUE((std::is_same, is_same_size>, std::tuple>)); + 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; + + using R1 = mp_unique_if_q, Q1>; + BOOST_TEST_TRAIT_TRUE((std::is_same, std::integral_constant>>)); + } + + { + BOOST_TEST_TRAIT_TRUE((std::is_same, Q2>, std::tuple>)); + BOOST_TEST_TRAIT_TRUE((std::is_same, Q2>, std::tuple>)); } return boost::report_errors();