From d151f9a712f7b7e416c468d30edf3c6a2a2739c2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 7 Dec 2019 20:15:24 +0200 Subject: [PATCH] Update test/mp_unique_if.cpp --- test/mp_unique_if.cpp | 98 +++++++++++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/test/mp_unique_if.cpp b/test/mp_unique_if.cpp index db527df..705e91a 100644 --- a/test/mp_unique_if.cpp +++ b/test/mp_unique_if.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,9 +9,16 @@ #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() { @@ -19,35 +26,82 @@ int main() 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>,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>)); - 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();