indirectly-binary-left-foldable, indirectly-binary-right-foldable
template< class F, class T, class I >
concept /*indirectly-binary-left-foldable*/ =
std::copy_constructible<F> &&
std::indirectly_readable<I> &&
std::invocable<F&, T, std::iter_reference_t<I>> &&
std::convertible_to<std::invoke_result_t
<F&, T, std::iter_reference_t<I>>,
std::decay_t<std::invoke_result_t<F&, T, std::iter_reference_t<I>>>> &&
/*indirectly-binary-left-foldable-impl*/
<F, T, I,
std::decay_t<std::invoke_result_t<F&, T, std::iter_reference_t<I>>>>;
| (1) |
(начиная с C++23) (только для экспозиции*) |
template< class F, class T, class I >
concept /*indirectly-binary-right-foldable*/ =
/*indirectly-binary-left-foldable*/</*flipped*/<F>, T, I>;
| (2) |
(начиная с C++23) (только для экспозиции*) |
| Вспомогательные концепты | ||
template< class F, class T, class I, class U >
concept /*indirectly-binary-left-foldable-impl*/ =
std::movable<T> &&
std::movable<U> &&
std::convertible_to<T, U> &&
std::invocable<F&, U, std::iter_reference_t<I>> &&
std::assignable_from
<U&, std::invoke_result_t<F&, U, std::iter_reference_t<I>>>;
| (3) |
(начиная с C++23) (только для экспозиции*) |
template< class F >
class /*flipped*/
{
F f; // exposition only
public:
template< class T, class U >
requires std::invocable<F&, U, T>
std::invoke_result_t<F&, U, T> operator()( T&&, U&& );
};
| (4) |
(начиная с C++23) (только для экспозиции*) |
1) Экспозиционный концепт
indirectly-binary-left-foldable используется алгоритмами свёртки влево для ограничения параметра шаблона объекта-функции.
2) Экспозиционный концепт
indirectly-binary-right-foldable используется алгоритмами свёртки вправо для ограничения параметра шаблона объекта-функции.См. также
|
(C++23) | выполняет свёртку диапазона элементов влево (объект-функция алгоритма) |
|
(C++23) | выполняет свёртку диапазона элементов влево и возвращает пару (итератор, значение) (объект-функция алгоритма) |
|
(C++23) | выполняет свёртку диапазона элементов влево, используя первый элемент в качестве начального значения (объект-функция алгоритма) |
|
(C++23) | выполняет свёртку диапазона элементов влево, используя первый элемент в качестве начального значения, и возвращает пару (итератор, optional) (объект-функция алгоритма) |
|
(C++23) | выполняет свёртку диапазона элементов вправо (объект-функция алгоритма) |
|
(C++23) | выполняет свёртку диапазона элементов вправо, используя последний элемент в качестве начального значения (объект-функция алгоритма) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/algorithm/ranges/fold_concepts