fold_left.hpp File Reference

## Functions

template<typename R , typename Op >
| ranges::CPP_TEMPLATE_AUX_0 (requires input_range< R > &&indirectly_binary_left_foldable< Op, range_value_t< R >, iterator_t< R >> &&constructible_from< range_value_t< R >, range_reference_t< R >>) const expr auto fold_left_first(R &&rng
template<typename Rng , typename T , typename Op >
| ranges::CPP_TEMPLATE_AUX_0 (requires input_range< Rng > &&indirectly_binary_left_foldable< Op, T, iterator_t< Rng >>) const expr auto fold_left(Rng &&rng
template<typename I , typename S , typename Op >
| ranges::CPP_TEMPLATE_AUX_0 (requires sentinel_for< S, I > &&input_iterator< I > &&indirectly_binary_left_foldable< Op, iter_value_t< I >, I > &&constructible_from< iter_value_t< I >, iter_reference_t< I >>) const expr auto fold_left_first(I first
template<typename I , typename S , typename T , typename Op >
| ranges::CPP_TEMPLATE_AUX_0 (requires sentinel_for< S, I > &&input_iterator< I > &&indirectly_binary_left_foldable< Op, T, I >) const expr auto fold_left(I first
| ranges::for (++first;first !=last;++first)
| ranges::if (first==last)
return | ranges::optional< U > (in_place, fold_left_fn{}(std::move(first), std::move(last), std::move(init), op))

## Variables

U | ranges::accum = invoke(op, std::move(init), *first)
template<class F , class T , class I >
concept | ranges::iindirectly_binary_left_foldable
| \concept indirectly_binary_left_foldable More...
template<class F , class T , class I , class U >
concept | ranges::iindirectly_binary_left_foldable_impl
| \concept indirectly_binary_left_foldable_impl More...
S T | ranges::init = *first
S T Op | ranges::op

## Variable Documentation

## iindirectly_binary_left_foldable

template<class F , class T , class I >

concept ranges::iindirectly_binary_left_foldable

Initial value:
=
copy_constructible<F> &&
indirectly_readable<I> &&
invocable<F&, T, iter_reference_t<I>> &&
convertible_to<invoke_result_t<F&, T, iter_reference_t<I>>,
std::decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>> &&
indirectly_binary_left_foldable_impl<F, T, I, std::decay_t<invoke_result_t<F&, T, iter_reference_t<I>>>>

\concept indirectly_binary_left_foldable

The `indirectly_binary_left_foldable` concept

## iindirectly_binary_left_foldable_impl

template<class F , class T , class I , class U >

concept ranges::iindirectly_binary_left_foldable_impl

Initial value:
=
movable<T> &&
movable<U> &&
convertible_to<T, U> &&
invocable<F&, U, iter_reference_t<I>> &&
assignable_from<U&, invoke_result_t<F&, U, iter_reference_t<I>>>

\concept indirectly_binary_left_foldable_impl

The `indirectly_binary_left_foldable_impl` concept