58 template<
typename ReducingFnGenT,
62 using base_t = std::tuple<ParamTs...>;
76 template <
typename ...Ts>
78 : base_t(std::move(ts)...)
81 template<
typename ReducingFnT>
82 constexpr
auto operator() (ReducingFnT&& step)
const
83 ->
typename ReducingFnGenT::template apply<
88 using indexes_t = estd::make_index_sequence<
sizeof...(ParamTs)>;
89 return this->make(std::forward<ReducingFnT>(step), indexes_t());
92 template<
typename ReducingFnT, std::size_t...indexes_t>
94 ->
typename ReducingFnGenT::template apply<
95 estd::decay_t<ReducingFnT>,
99 return { std::forward<ReducingFnT>(step),
100 std::get<indexes_t>(*this)... };
typename std::decay< T >::type decay_t
Similar to C++14 std::decay_t.
C++ amazing templates and reusable implementations awesomeness.