36 template(
typename I,
typename S,
typename T,
typename Op =
plus,
39 indirectly_binary_invocable_<Op, T *, projected<I, P>> AND
40 assignable_from<T &, indirect_result_t<Op &, T *, projected<I, P>>>)
41 T operator()(I first, S last, T init, Op op = Op{},
44 for(; first != last; ++first)
45 init = invoke(op, init, invoke(proj, *first));
49 template(
typename Rng,
typename T,
typename Op =
plus,
typename P =
identity)(
51 indirectly_binary_invocable_<Op, T *, projected<
iterator_t<Rng>, P>> AND
54 T operator()(Rng && rng, T init, Op op = Op{}, P proj = P{})
const
57 begin(rng), end(rng), std::move(init), std::move(op), std::move(proj));