Range-v3
Range algorithms, views, and actions for the Standard Library
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

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