MPL11
 All Classes Namespaces Files Typedefs Macros Groups Pages
variadic_arrow.hpp
Go to the documentation of this file.
1 
12 #ifndef BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ARROW_HPP
13 #define BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ARROW_HPP
14 
15 namespace boost { namespace mpl11 { namespace detail { namespace left_folds {
16  template <template <typename ...> class f, typename state, typename ...xs>
17  struct arrow_impl {
18  state result;
19  arrow_impl* operator->();
20  };
21 
22  template <template <typename ...> class f,
23  typename state, typename x, typename ...xs>
24  struct arrow_impl<f, state, x, xs...> {
25  arrow_impl<f, f<state, x>, xs...> operator->();
26  };
27 
35  template <template <typename ...> class f, typename state, typename ...xs>
36  using variadic_arrow = decltype(arrow_impl<f, state, xs...>{}->result);
37 }}}} // end namespace boost::mpl11::detail::left_folds
38 
39 #endif // !BOOST_MPL11_DETAIL_LEFT_FOLDS_VARIADIC_ARROW_HPP