]>
Commit | Line | Data |
---|---|---|
1 | // Copyright Louis Dionne 2013-2022 | |
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/any_of.hpp> | |
6 | #include <boost/hana/detail/wrong.hpp> | |
7 | #include <boost/hana/integral_constant.hpp> | |
8 | namespace hana = boost::hana; | |
9 | ||
10 | ||
11 | template <typename I> | |
12 | struct is_even { | |
13 | static constexpr bool value = I::value % 2 == 0; | |
14 | }; | |
15 | ||
16 | ||
17 | static_assert(!hana::detail::any_of<is_even>::value, ""); | |
18 | static_assert(!hana::detail::any_of<is_even, hana::int_<1>>::value, ""); | |
19 | static_assert(!hana::detail::any_of<is_even, hana::int_<1>, hana::int_<3>>::value, ""); | |
20 | static_assert(!hana::detail::any_of<is_even, hana::int_<1>, hana::int_<3>, hana::int_<5>>::value, ""); | |
21 | static_assert(!hana::detail::any_of<is_even, hana::int_<1>, hana::int_<3>, hana::int_<5>, hana::int_<7>>::value, ""); | |
22 | ||
23 | static_assert(hana::detail::any_of<is_even, hana::int_<0>>::value, ""); | |
24 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<2>>::value, ""); | |
25 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<2>, hana::int_<4>>::value, ""); | |
26 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<2>, hana::int_<4>, hana::int_<6>>::value, ""); | |
27 | ||
28 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<1>>::value, ""); | |
29 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<1>, hana::int_<2>>::value, ""); | |
30 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<1>, hana::int_<2>, hana::int_<3>>::value, ""); | |
31 | static_assert(hana::detail::any_of<is_even, hana::int_<0>, hana::int_<1>, hana::int_<2>, hana::int_<3>, hana::int_<4>>::value, ""); | |
32 | static_assert(hana::detail::any_of<is_even, hana::int_<1>, hana::int_<3>, hana::int_<5>, hana::int_<8>>::value, ""); | |
33 | static_assert(hana::detail::any_of<is_even, hana::int_<1>, hana::int_<8>, hana::int_<5>, hana::int_<7>>::value, ""); | |
34 | ||
35 | // Make sure we short-circuit properly | |
36 | template <typename ...Dummy> | |
37 | struct fail { | |
38 | static_assert(hana::detail::wrong<Dummy...>::value, | |
39 | "this must never be instantiated"); | |
40 | }; | |
41 | static_assert(hana::detail::any_of<is_even, hana::int_<1>, hana::int_<2>, fail<>>::value, ""); | |
42 | static_assert(hana::detail::any_of<is_even, hana::int_<1>, hana::int_<2>, fail<>, hana::int_<3>>::value, ""); | |
43 | static_assert(hana::detail::any_of<is_even, hana::int_<1>, hana::int_<2>, fail<>, hana::int_<4>>::value, ""); | |
44 | ||
45 | int main() { } |