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/type_foldr1.hpp>
6
7#include <type_traits>
8namespace hana = boost::hana;
9
10
11template <typename x, typename state>
12struct f {
13 struct type;
14};
15
16template <int>
17struct x;
18
19static_assert(std::is_same<
20 hana::detail::type_foldr1<f, x<0>>::type,
21 x<0>
22>{}, "");
23
24static_assert(std::is_same<
25 hana::detail::type_foldr1<f, x<0>, x<1>>::type,
26 f<x<0>, x<1>>::type
27>{}, "");
28
29static_assert(std::is_same<
30 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>>::type,
31 f<x<0>, f<x<1>, x<2>>::type>::type
32>{}, "");
33
34static_assert(std::is_same<
35 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>>::type,
36 f<x<0>, f<x<1>, f<x<2>, x<3>>::type>::type>::type
37>{}, "");
38
39static_assert(std::is_same<
40 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>, x<4>>::type,
41 f<x<0>, f<x<1>, f<x<2>, f<x<3>, x<4>>::type>::type>::type>::type
42>{}, "");
43
44static_assert(std::is_same<
45 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>>::type,
46 f<x<0>, f<x<1>, f<x<2>, f<x<3>, f<x<4>, x<5>>::type>::type>::type>::type>::type
47>{}, "");
48
49static_assert(std::is_same<
50 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>>::type,
51 f<x<0>, f<x<1>, f<x<2>, f<x<3>, f<x<4>, f<x<5>, x<6>>::type>::type>::type>::type>::type>::type
52>{}, "");
53
54static_assert(std::is_same<
55 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>, x<7>>::type,
56 f<x<0>, f<x<1>, f<x<2>, f<x<3>, f<x<4>, f<x<5>, f<x<6>, x<7>>::type>::type>::type>::type>::type>::type>::type
57>{}, "");
58
59static_assert(std::is_same<
60 hana::detail::type_foldr1<f, x<0>, x<1>, x<2>, x<3>, x<4>, x<5>, x<6>, x<7>, x<8>>::type,
61 f<x<0>, f<x<1>, f<x<2>, f<x<3>, f<x<4>, f<x<5>, f<x<6>, f<x<7>, x<8>>::type>::type>::type>::type>::type>::type>::type>::type
62>{}, "");
63
64int main() { }
65

source code of boost/libs/hana/test/detail/type_foldr1.cpp