]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/ext/boost/mpl/vector/iterable.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/ext/boost/mpl/vector.hpp>
7 #include <boost/hana/assert.hpp>
8 #include <boost/hana/drop_front_exactly.hpp>
9 #include <boost/hana/equal.hpp>
10 #include <boost/hana/front.hpp>
11 #include <boost/hana/is_empty.hpp>
12 #include <boost/hana/not.hpp>
13 #include <boost/hana/tuple.hpp>
14 #include <boost/hana/type.hpp>
16 #include <laws/iterable.hpp>
18 #include <boost/mpl/vector.hpp>
19 namespace hana
= boost::hana
;
20 namespace mpl
= boost::mpl
;
23 struct t1
; struct t2
; struct t3
; struct t4
;
28 BOOST_HANA_CONSTANT_CHECK(hana::equal(
29 hana::front(mpl::vector
<t1
>{}),
32 BOOST_HANA_CONSTANT_CHECK(hana::equal(
33 hana::front(mpl::vector
<t1
, t2
>{}),
36 BOOST_HANA_CONSTANT_CHECK(hana::equal(
37 hana::front(mpl::vector
<t1
, t2
, t3
>{}),
44 BOOST_HANA_CONSTANT_CHECK(hana::equal(
45 hana::drop_front_exactly(mpl::vector
<t1
>{}),
48 BOOST_HANA_CONSTANT_CHECK(hana::equal(
49 hana::drop_front_exactly(mpl::vector
<t1
, t2
>{}),
52 BOOST_HANA_CONSTANT_CHECK(hana::equal(
53 hana::drop_front_exactly(mpl::vector
<t1
, t2
, t3
>{}),
58 BOOST_HANA_CONSTANT_CHECK(hana::equal(
59 hana::drop_front_exactly(mpl::vector
<t1
, t2
, t3
>{}, hana::size_c
<2>),
63 BOOST_HANA_CONSTANT_CHECK(hana::equal(
64 hana::drop_front_exactly(mpl::vector
<t1
, t2
, t3
, t4
>{}, hana::size_c
<2>),
68 BOOST_HANA_CONSTANT_CHECK(hana::equal(
69 hana::drop_front_exactly(mpl::vector
<t1
, t2
, t3
, t4
>{}, hana::size_c
<3>),
76 BOOST_HANA_CONSTANT_CHECK(hana::is_empty(mpl::vector
<>{}));
77 BOOST_HANA_CONSTANT_CHECK(hana::is_empty(mpl::vector0
<>{}));
79 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(mpl::vector
<t1
>{})));
80 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(mpl::vector1
<t1
>{})));
82 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(mpl::vector
<t1
, t2
>{})));
83 BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(mpl::vector2
<t1
, t2
>{})));
87 auto vectors
= hana::make_tuple(
90 , mpl::vector
<t1
, t2
>{}
91 , mpl::vector
<t1
, t2
, t3
>{}
92 , mpl::vector
<t1
, t2
, t3
, t4
>{}
94 hana::test::TestIterable
<hana::ext::boost::mpl::vector_tag
>{vectors
};