]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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/assert.hpp> | |
6 | #include <boost/hana/drop_front.hpp> | |
7 | #include <boost/hana/equal.hpp> | |
8 | #include <boost/hana/experimental/types.hpp> | |
9 | #include <boost/hana/integral_constant.hpp> | |
10 | namespace hana = boost::hana; | |
11 | ||
12 | ||
13 | template <int> struct x; | |
14 | ||
15 | int main() { | |
16 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
17 | hana::drop_front(hana::experimental::types<>{}, hana::size_c<0>), | |
18 | hana::experimental::types<>{} | |
19 | )); | |
20 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
21 | hana::drop_front(hana::experimental::types<>{}, hana::size_c<1>), | |
22 | hana::experimental::types<>{} | |
23 | )); | |
24 | ||
25 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
26 | hana::drop_front(hana::experimental::types<x<0>>{}, hana::size_c<0>), | |
27 | hana::experimental::types<x<0>>{} | |
28 | )); | |
29 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
30 | hana::drop_front(hana::experimental::types<x<0>>{}, hana::size_c<1>), | |
31 | hana::experimental::types<>{} | |
32 | )); | |
33 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
34 | hana::drop_front(hana::experimental::types<x<0>>{}, hana::size_c<2>), | |
35 | hana::experimental::types<>{} | |
36 | )); | |
37 | ||
38 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
39 | hana::drop_front(hana::experimental::types<x<0>, x<1>>{}, hana::size_c<0>), | |
40 | hana::experimental::types<x<0>, x<1>>{} | |
41 | )); | |
42 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
43 | hana::drop_front(hana::experimental::types<x<0>, x<1>>{}, hana::size_c<1>), | |
44 | hana::experimental::types<x<1>>{} | |
45 | )); | |
46 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
47 | hana::drop_front(hana::experimental::types<x<0>, x<1>>{}, hana::size_c<2>), | |
48 | hana::experimental::types<>{} | |
49 | )); | |
50 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
51 | hana::drop_front(hana::experimental::types<x<0>, x<1>>{}, hana::size_c<3>), | |
52 | hana::experimental::types<>{} | |
53 | )); | |
54 | ||
55 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
56 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>>{}, hana::size_c<0>), | |
57 | hana::experimental::types<x<0>, x<1>, x<2>>{} | |
58 | )); | |
59 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
60 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>>{}, hana::size_c<1>), | |
61 | hana::experimental::types<x<1>, x<2>>{} | |
62 | )); | |
63 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
64 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>>{}, hana::size_c<2>), | |
65 | hana::experimental::types<x<2>>{} | |
66 | )); | |
67 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
68 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>>{}, hana::size_c<3>), | |
69 | hana::experimental::types<>{} | |
70 | )); | |
71 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
72 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>>{}, hana::size_c<4>), | |
73 | hana::experimental::types<>{} | |
74 | )); | |
75 | ||
76 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
77 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<0>), | |
78 | hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{} | |
79 | )); | |
80 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
81 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<1>), | |
82 | hana::experimental::types<x<1>, x<2>, x<3>>{} | |
83 | )); | |
84 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
85 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<2>), | |
86 | hana::experimental::types<x<2>, x<3>>{} | |
87 | )); | |
88 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
89 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<3>), | |
90 | hana::experimental::types<x<3>>{} | |
91 | )); | |
92 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
93 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<4>), | |
94 | hana::experimental::types<>{} | |
95 | )); | |
96 | BOOST_HANA_CONSTANT_CHECK(hana::equal( | |
97 | hana::drop_front(hana::experimental::types<x<0>, x<1>, x<2>, x<3>>{}, hana::size_c<5>), | |
98 | hana::experimental::types<>{} | |
99 | )); | |
100 | } |