]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mp11/test/mp_apply_q.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/core/lightweight_test_trait.hpp>
11 #include <boost/mp11/list.hpp>
12 #include <boost/mp11/utility.hpp>
13 #include <type_traits>
17 template<class... T
> struct X
{};
18 template<class... T
> using Y
= X
<T
...>;
22 template<class... T
> using fn
= X
<T
...>;
27 using boost::mp11::mp_list
;
28 using boost::mp11::mp_quote
;
29 using boost::mp11::mp_apply_q
;
33 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L1
>, mp_list
<>>));
34 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L1
>, std::tuple
<>>));
35 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L1
>, X
<>>));
36 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L1
>, Y
<>>));
37 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L1
>, X
<>>));
39 using L2
= mp_list
<char>;
41 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L2
>, mp_list
<char>>));
42 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L2
>, std::tuple
<char>>));
43 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L2
>, X
<char>>));
44 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L2
>, Y
<char>>));
45 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L2
>, X
<char>>));
47 using L3
= mp_list
<char, double>;
49 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L3
>, mp_list
<char, double>>));
50 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L3
>, std::tuple
<char, double>>));
51 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L3
>, X
<char, double>>));
52 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L3
>, Y
<char, double>>));
53 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::pair
>, L3
>, std::pair
<char, double>>));
54 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L3
>, X
<char, double>>));
56 using L4
= mp_list
<int, char, float>;
58 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L4
>, mp_list
<int, char, float>>));
59 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L4
>, std::tuple
<int, char, float>>));
60 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L4
>, X
<int, char, float>>));
61 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L4
>, Y
<int, char, float>>));
62 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L4
>, X
<int, char, float>>));
66 using L5
= std::tuple
<>;
68 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L5
>, mp_list
<>>));
69 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L5
>, std::tuple
<>>));
70 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L5
>, X
<>>));
71 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L5
>, Y
<>>));
72 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L5
>, X
<>>));
74 using L6
= std::tuple
<char>;
76 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L6
>, mp_list
<char>>));
77 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L6
>, std::tuple
<char>>));
78 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L6
>, X
<char>>));
79 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L6
>, Y
<char>>));
80 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L6
>, X
<char>>));
82 using L7
= std::tuple
<char, double>;
84 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L7
>, mp_list
<char, double>>));
85 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L7
>, std::tuple
<char, double>>));
86 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L7
>, X
<char, double>>));
87 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L7
>, Y
<char, double>>));
88 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::pair
>, L7
>, std::pair
<char, double>>));
89 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L7
>, X
<char, double>>));
91 using L8
= std::tuple
<int, char, float>;
93 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L8
>, mp_list
<int, char, float>>));
94 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L8
>, std::tuple
<int, char, float>>));
95 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L8
>, X
<int, char, float>>));
96 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L8
>, Y
<int, char, float>>));
97 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L8
>, X
<int, char, float>>));
101 using L9
= std::pair
<char, double>;
103 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<mp_list
>, L9
>, mp_list
<char, double>>));
104 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::tuple
>, L9
>, std::tuple
<char, double>>));
105 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<X
>, L9
>, X
<char, double>>));
106 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<Y
>, L9
>, Y
<char, double>>));
107 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<mp_quote
<std::pair
>, L9
>, std::pair
<char, double>>));
108 BOOST_TEST_TRAIT_TRUE((std::is_same
<mp_apply_q
<Q
, L9
>, X
<char, double>>));
112 return boost::report_errors();