]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mp11/test/mp_reverse.cpp
2 // Copyright 2015-2017 Peter Dimov.
4 // Distributed under the Boost Software License, Version 1.0.
6 // See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt
10 #include <boost/mp11/algorithm.hpp>
11 #include <boost/mp11/list.hpp>
12 #include <boost/mp11/integral.hpp>
13 #include <boost/core/lightweight_test_trait.hpp>
14 #include <boost/config.hpp>
15 #include <boost/detail/workaround.hpp>
16 #include <type_traits>
32 using boost::mp11::mp_plus
;
36 using boost::mp11::mp_list
;
37 using boost::mp11::mp_reverse
;
40 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<>>, mp_list
<>>));
41 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
>>, mp_list
<X1
>>));
42 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
>>, mp_list
<X2
, X1
>>));
43 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
>>, mp_list
<X3
, X2
, X1
>>));
44 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
>>, mp_list
<X4
, X3
, X2
, X1
>>));
45 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
>>, mp_list
<X5
, X4
, X3
, X2
, X1
>>));
46 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
>>, mp_list
<X6
, X5
, X4
, X3
, X2
, X1
>>));
47 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
>>, mp_list
<X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
48 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
>>, mp_list
<X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
49 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
>>, mp_list
<X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
50 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
>>, mp_list
<X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
51 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
, X11
>>, mp_list
<X11
, X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
52 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
, X11
, X12
>>, mp_list
<X12
, X11
, X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
56 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<>>, std::tuple
<>>));
57 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
>>, std::tuple
<X1
>>));
58 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
>>, std::tuple
<X2
, X1
>>));
59 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
>>, std::tuple
<X3
, X2
, X1
>>));
60 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
>>, std::tuple
<X4
, X3
, X2
, X1
>>));
61 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
>>, std::tuple
<X5
, X4
, X3
, X2
, X1
>>));
62 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
>>, std::tuple
<X6
, X5
, X4
, X3
, X2
, X1
>>));
63 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
>>, std::tuple
<X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
64 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
>>, std::tuple
<X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
65 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
>>, std::tuple
<X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
66 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
>>, std::tuple
<X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
67 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
, X11
>>, std::tuple
<X11
, X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
68 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
, X6
, X7
, X8
, X9
, X10
, X11
, X12
>>, std::tuple
<X12
, X11
, X10
, X9
, X8
, X7
, X6
, X5
, X4
, X3
, X2
, X1
>>));
72 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::pair
<X1
, X2
>>, std::pair
<X2
, X1
>>));
75 using boost::mp11::mp_iota_c
;
76 using boost::mp11::mp_size_t
;
77 using boost::mp11::mp_transform
;
78 using boost::mp11::mp_fill
;
83 using L
= mp_iota_c
<N
>;
85 using R1
= mp_reverse
<L
>;
86 using R2
= mp_reverse
<R1
>;
88 BOOST_TEST_TRAIT_TRUE((std::is_same
<R2
, L
>));
90 using R3
= mp_transform
<mp_plus
, R1
, R2
>;
92 BOOST_TEST_TRAIT_TRUE((std::is_same
<R3
, mp_fill
<L
, mp_size_t
<N
-1>>>));
95 return boost::report_errors();