]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mp11/test/mp_erase.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>
26 using boost::mp11::mp_list
;
27 using boost::mp11::mp_erase
;
28 using boost::mp11::mp_erase_c
;
29 using boost::mp11::mp_size_t
;
31 using _0
= mp_size_t
<0>;
32 using _1
= mp_size_t
<1>;
33 using _2
= mp_size_t
<2>;
34 using _3
= mp_size_t
<3>;
35 using _4
= mp_size_t
<4>;
36 using _5
= mp_size_t
<5>;
41 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L1
, 0, 0>, L1
>));
42 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L1
, _0
, _0
>, L1
>));
44 using L2
= mp_list
<X1
, X2
, X3
, X4
, X5
>;
46 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 0>, L2
>));
47 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 1>, L2
>));
48 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 2>, L2
>));
49 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 3>, L2
>));
50 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 4, 4>, L2
>));
51 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 5, 5>, L2
>));
53 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _0
>, L2
>));
54 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _1
>, L2
>));
55 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _2
>, L2
>));
56 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _3
>, L2
>));
57 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _4
, _4
>, L2
>));
58 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _5
, _5
>, L2
>));
60 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 1>, mp_list
<X2
, X3
, X4
, X5
>>));
61 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 2>, mp_list
<X1
, X3
, X4
, X5
>>));
62 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 3>, mp_list
<X1
, X2
, X4
, X5
>>));
63 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 4>, mp_list
<X1
, X2
, X3
, X5
>>));
64 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 4, 5>, mp_list
<X1
, X2
, X3
, X4
>>));
66 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _1
>, mp_list
<X2
, X3
, X4
, X5
>>));
67 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _2
>, mp_list
<X1
, X3
, X4
, X5
>>));
68 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _3
>, mp_list
<X1
, X2
, X4
, X5
>>));
69 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _4
>, mp_list
<X1
, X2
, X3
, X5
>>));
70 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _4
, _5
>, mp_list
<X1
, X2
, X3
, X4
>>));
72 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 2>, mp_list
<X3
, X4
, X5
>>));
73 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 3>, mp_list
<X1
, X4
, X5
>>));
74 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 4>, mp_list
<X1
, X2
, X5
>>));
75 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 5>, mp_list
<X1
, X2
, X3
>>));
77 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _2
>, mp_list
<X3
, X4
, X5
>>));
78 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _3
>, mp_list
<X1
, X4
, X5
>>));
79 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _4
>, mp_list
<X1
, X2
, X5
>>));
80 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _5
>, mp_list
<X1
, X2
, X3
>>));
82 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 3>, mp_list
<X4
, X5
>>));
83 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 4>, mp_list
<X1
, X5
>>));
84 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 5>, mp_list
<X1
, X2
>>));
86 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _3
>, mp_list
<X4
, X5
>>));
87 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _4
>, mp_list
<X1
, X5
>>));
88 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _5
>, mp_list
<X1
, X2
>>));
90 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 4>, mp_list
<X5
>>));
91 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 5>, mp_list
<X1
>>));
92 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 5>, mp_list
<>>));
94 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _4
>, mp_list
<X5
>>));
95 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _5
>, mp_list
<X1
>>));
96 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _5
>, mp_list
<>>));
98 using L3
= mp_list
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>;
100 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L3
, 8, 18>, mp_list
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>>));
101 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L3
, mp_size_t
<8>, mp_size_t
<18>>, mp_list
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>>));
105 using L1
= std::tuple
<>;
107 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L1
, 0, 0>, L1
>));
108 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L1
, _0
, _0
>, L1
>));
110 using L2
= std::tuple
<X1
, X2
, X3
, X4
, X5
>;
112 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 0>, L2
>));
113 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 1>, L2
>));
114 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 2>, L2
>));
115 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 3>, L2
>));
116 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 4, 4>, L2
>));
117 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 5, 5>, L2
>));
119 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _0
>, L2
>));
120 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _1
>, L2
>));
121 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _2
>, L2
>));
122 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _3
>, L2
>));
123 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _4
, _4
>, L2
>));
124 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _5
, _5
>, L2
>));
126 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 1>, std::tuple
<X2
, X3
, X4
, X5
>>));
127 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 2>, std::tuple
<X1
, X3
, X4
, X5
>>));
128 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 3>, std::tuple
<X1
, X2
, X4
, X5
>>));
129 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 4>, std::tuple
<X1
, X2
, X3
, X5
>>));
130 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 4, 5>, std::tuple
<X1
, X2
, X3
, X4
>>));
132 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _1
>, std::tuple
<X2
, X3
, X4
, X5
>>));
133 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _2
>, std::tuple
<X1
, X3
, X4
, X5
>>));
134 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _3
>, std::tuple
<X1
, X2
, X4
, X5
>>));
135 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _4
>, std::tuple
<X1
, X2
, X3
, X5
>>));
136 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _4
, _5
>, std::tuple
<X1
, X2
, X3
, X4
>>));
138 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 2>, std::tuple
<X3
, X4
, X5
>>));
139 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 3>, std::tuple
<X1
, X4
, X5
>>));
140 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 4>, std::tuple
<X1
, X2
, X5
>>));
141 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 3, 5>, std::tuple
<X1
, X2
, X3
>>));
143 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _2
>, std::tuple
<X3
, X4
, X5
>>));
144 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _3
>, std::tuple
<X1
, X4
, X5
>>));
145 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _4
>, std::tuple
<X1
, X2
, X5
>>));
146 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _3
, _5
>, std::tuple
<X1
, X2
, X3
>>));
148 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 3>, std::tuple
<X4
, X5
>>));
149 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 4>, std::tuple
<X1
, X5
>>));
150 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 2, 5>, std::tuple
<X1
, X2
>>));
152 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _3
>, std::tuple
<X4
, X5
>>));
153 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _4
>, std::tuple
<X1
, X5
>>));
154 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _2
, _5
>, std::tuple
<X1
, X2
>>));
156 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 4>, std::tuple
<X5
>>));
157 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 1, 5>, std::tuple
<X1
>>));
158 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L2
, 0, 5>, std::tuple
<>>));
160 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _4
>, std::tuple
<X5
>>));
161 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _1
, _5
>, std::tuple
<X1
>>));
162 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L2
, _0
, _5
>, std::tuple
<>>));
164 using L3
= std::tuple
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>;
166 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase_c
<L3
, 8, 18>, std::tuple
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>>));
167 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_erase
<L3
, mp_size_t
<8>, mp_size_t
<18>>, std::tuple
<X1
, X2
, X3
, X4
, X5
, X1
, X2
, X3
, X4
, X5
>>));
170 return boost::report_errors();