]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/detail/index_if.cpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / hana / test / detail / index_if.cpp
1 // Copyright Louis Dionne 2013-2016
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
4
5 #include <boost/hana/detail/index_if.hpp>
6
7 #include <boost/hana/bool.hpp>
8 namespace hana = boost::hana;
9
10
11 template <int i>
12 struct x { };
13
14 template <int n>
15 struct Find {
16 template <int i>
17 constexpr auto operator()(x<i> const&) const
18 { return hana::bool_c<n == i>; }
19 };
20
21 struct NotFound {
22 template <typename T>
23 constexpr auto operator()(T const&) const
24 { return hana::false_c; }
25 };
26
27 struct Undefined;
28
29 int main() {
30 {
31 using Pack = hana::detail::pack<>;
32 static_assert(hana::detail::index_if<Undefined, Pack>::value == 0, "");
33 }
34
35 {
36 using Pack = hana::detail::pack<x<0>>;
37 static_assert(hana::detail::index_if<Find<0>, Pack>::value == 0, "");
38 static_assert(hana::detail::index_if<NotFound, Pack>::value == 1, "");
39 }
40
41 {
42 using Pack = hana::detail::pack<x<0>, x<1>>;
43 static_assert(hana::detail::index_if<Find<0>, Pack>::value == 0, "");
44 static_assert(hana::detail::index_if<Find<1>, Pack>::value == 1, "");
45 static_assert(hana::detail::index_if<NotFound, Pack>::value == 2, "");
46 }
47
48 {
49 using Pack = hana::detail::pack<x<0>, x<1>, x<2>>;
50 static_assert(hana::detail::index_if<Find<0>, Pack>::value == 0, "");
51 static_assert(hana::detail::index_if<Find<1>, Pack>::value == 1, "");
52 static_assert(hana::detail::index_if<Find<2>, Pack>::value == 2, "");
53 static_assert(hana::detail::index_if<NotFound, Pack>::value == 3, "");
54 }
55
56 {
57 using Pack = hana::detail::pack<x<0>, x<1>, x<2>, x<3>>;
58 static_assert(hana::detail::index_if<Find<0>, Pack>::value == 0, "");
59 static_assert(hana::detail::index_if<Find<1>, Pack>::value == 1, "");
60 static_assert(hana::detail::index_if<Find<2>, Pack>::value == 2, "");
61 static_assert(hana::detail::index_if<Find<3>, Pack>::value == 3, "");
62 static_assert(hana::detail::index_if<NotFound, Pack>::value == 4, "");
63 }
64
65 {
66 using Pack = hana::detail::pack<x<0>, x<1>, x<2>, x<3>, x<4>>;
67 static_assert(hana::detail::index_if<Find<0>, Pack>::value == 0, "");
68 static_assert(hana::detail::index_if<Find<1>, Pack>::value == 1, "");
69 static_assert(hana::detail::index_if<Find<2>, Pack>::value == 2, "");
70 static_assert(hana::detail::index_if<Find<3>, Pack>::value == 3, "");
71 static_assert(hana::detail::index_if<Find<4>, Pack>::value == 4, "");
72 static_assert(hana::detail::index_if<NotFound, Pack>::value == 5, "");
73 }
74 }