]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/functional/overload_linearly.cpp
1 // Copyright Louis Dionne 2013-2017
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)
5 #include <boost/hana/functional/overload_linearly.hpp>
7 #include <boost/hana/assert.hpp>
8 #include <boost/hana/equal.hpp>
10 #include <laws/base.hpp>
11 namespace hana
= boost::hana
;
12 using hana::test::ct_eq
;
21 // 2 functions without overlap
23 auto f
= hana::overload_linearly(
24 [](A
) { return ct_eq
<0>{}; },
25 [](B
) { return ct_eq
<1>{}; }
28 BOOST_HANA_CONSTANT_CHECK(hana::equal(
33 BOOST_HANA_CONSTANT_CHECK(hana::equal(
38 BOOST_HANA_CONSTANT_CHECK(hana::equal(
44 // 2 functions with overlap
46 auto f
= hana::overload_linearly(
47 [](A
) { return ct_eq
<0>{}; },
48 [](A
) { return ct_eq
<1>{}; }
51 auto g
= hana::overload_linearly(
52 [](A
) { return ct_eq
<0>{}; },
53 [](AA
) { return ct_eq
<1>{}; }
56 BOOST_HANA_CONSTANT_CHECK(hana::equal(
61 BOOST_HANA_CONSTANT_CHECK(hana::equal(
66 BOOST_HANA_CONSTANT_CHECK(hana::equal(
71 BOOST_HANA_CONSTANT_CHECK(hana::equal(
79 auto f
= hana::overload_linearly(
80 [](A
) { return ct_eq
<0>{}; },
81 [](B
) { return ct_eq
<1>{}; },
82 [](C
) { return ct_eq
<2>{}; }
85 BOOST_HANA_CONSTANT_CHECK(hana::equal(
90 BOOST_HANA_CONSTANT_CHECK(hana::equal(
95 BOOST_HANA_CONSTANT_CHECK(hana::equal(
100 BOOST_HANA_CONSTANT_CHECK(hana::equal(
106 // 1 function (github issue #280)
108 auto f
= hana::overload_linearly(
109 [](A
) { return ct_eq
<0>{}; }
112 BOOST_HANA_CONSTANT_CHECK(hana::equal(
117 BOOST_HANA_CONSTANT_CHECK(hana::equal(