16 #ifndef BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ALIASED_HPP
17 #define BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ALIASED_HPP
19 namespace boost {
namespace mpl11 {
namespace detail {
namespace left_folds {
23 struct variadic_aliased_impl;
26 struct variadic_aliased_impl< 6 > {
28 template <
typename ...>
class f,
30 ,
typename x1,
typename x2,
typename x3,
typename x4,
typename x5,
typename x6,
33 typename variadic_aliased_impl< (
sizeof...(xs) > 6 ? 6 :
sizeof...(xs)) >::
36 f<f<f<f<f<f<state, x1>, x2>, x3>, x4>, x5>, x6>,
43 struct variadic_aliased_impl< 0 > {
45 template <
typename ...>
class f,
53 struct variadic_aliased_impl< 1 > {
55 template <
typename ...>
class f,
59 using apply = f<state, x1>;
63 struct variadic_aliased_impl< 2 > {
65 template <
typename ...>
class f,
67 ,
typename x1,
typename x2
69 using apply = f<f<state, x1>, x2>;
73 struct variadic_aliased_impl< 3 > {
75 template <
typename ...>
class f,
77 ,
typename x1,
typename x2,
typename x3
79 using apply = f<f<f<state, x1>, x2>, x3>;
83 struct variadic_aliased_impl< 4 > {
85 template <
typename ...>
class f,
87 ,
typename x1,
typename x2,
typename x3,
typename x4
89 using apply = f<f<f<f<state, x1>, x2>, x3>, x4>;
93 struct variadic_aliased_impl< 5 > {
95 template <
typename ...>
class f,
97 ,
typename x1,
typename x2,
typename x3,
typename x4,
typename x5
99 using apply = f<f<f<f<f<state, x1>, x2>, x3>, x4>, x5>;
110 template <
template <
typename ...>
class f,
typename state,
typename ...xs>
112 : variadic_aliased_impl< (sizeof...(xs) > 6 ? 6 : sizeof...(xs)) >::
113 template
apply<f, state, xs...>
117 #endif // !BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ALIASED_HPP
Recursive alias-based variadic left fold.
Definition: variadic_aliased.hpp:111
Invokes a metafunction class with the given arguments.
Definition: functional.hpp:39