]>
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 <type_traits>
30 using boost::mp11::mp_plus
;
34 using boost::mp11::mp_list
;
35 using boost::mp11::mp_reverse
;
38 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<>>, mp_list
<>>));
39 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
>>, mp_list
<X1
>>));
40 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
>>, mp_list
<X2
, X1
>>));
41 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
>>, mp_list
<X3
, X2
, X1
>>));
42 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
>>, mp_list
<X4
, X3
, X2
, X1
>>));
43 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<mp_list
<X1
, X2
, X3
, X4
, X5
>>, mp_list
<X5
, X4
, X3
, X2
, X1
>>));
44 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
>>));
45 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
>>));
46 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
>>));
47 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
>>));
48 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
>>));
49 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
>>));
50 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
>>));
54 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<>>, std::tuple
<>>));
55 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
>>, std::tuple
<X1
>>));
56 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
>>, std::tuple
<X2
, X1
>>));
57 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
>>, std::tuple
<X3
, X2
, X1
>>));
58 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
>>, std::tuple
<X4
, X3
, X2
, X1
>>));
59 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::tuple
<X1
, X2
, X3
, X4
, X5
>>, std::tuple
<X5
, X4
, X3
, X2
, X1
>>));
60 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
>>));
61 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
>>));
62 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
>>));
63 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
>>));
64 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
>>));
65 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
>>));
66 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
>>));
70 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_reverse
<std::pair
<X1
, X2
>>, std::pair
<X2
, X1
>>));
73 using boost::mp11::mp_iota_c
;
74 using boost::mp11::mp_size_t
;
75 using boost::mp11::mp_transform
;
76 using boost::mp11::mp_fill
;
81 using L
= mp_iota_c
<N
>;
83 using R1
= mp_reverse
<L
>;
84 using R2
= mp_reverse
<R1
>;
86 BOOST_TEST_TRAIT_TRUE((std::is_same
<R2
, L
>));
88 using R3
= mp_transform
<mp_plus
, R1
, R2
>;
90 BOOST_TEST_TRAIT_TRUE((std::is_same
<R3
, mp_fill
<L
, mp_size_t
<N
-1>>>));
93 return boost::report_errors();