Scroll to navigation

std::indirectly_unary_invocable,std::indirectly_regular_unary_invocable(3) C++ Standard Libary std::indirectly_unary_invocable,std::indirectly_regular_unary_invocable(3)

NAME

std::indirectly_unary_invocable,std::indirectly_regular_unary_invocable - std::indirectly_unary_invocable,std::indirectly_regular_unary_invocable

Synopsis


Defined in header <iterator>
template< class F, class I >


concept indirectly_unary_invocable =
std::indirectly_readable<I> &&
std::copy_constructible<F> &&
std::invocable<F&, std::iter_value_t<I>&> && (since C++20)
std::invocable<F&, std::iter_reference_t<I>> &&
std::invocable<F&, std::iter_common_reference_t<I>> &&
std::common_reference_with<
std::invoke_result_t<F&, std::iter_value_t<I>&>,


std::invoke_result_t<F&, std::iter_reference_t<I>>>;
template< class F, class I >


concept indirectly_regular_unary_invocable =
std::indirectly_readable<I> &&
std::copy_constructible<F> &&
std::regular_invocable<F&, std::iter_value_t<I>&> && (since C++20)
std::regular_invocable<F&, std::iter_reference_t<I>> &&
std::regular_invocable<F&, std::iter_common_reference_t<I>> &&
std::common_reference_with<
std::invoke_result_t<F&, std::iter_value_t<I>&>,


std::invoke_result_t<F&, std::iter_reference_t<I>>>;


The concepts indirectly_unary_invocable and indirectly_regular_unary_invocable
specify requirements for algorithms that call (regular) unary invocables as their
arguments. The key difference between these concepts and std::invocable is that they
are applied to the type the I references, rather than I itself.


Semantic requirements


Each concept is modeled by F and I only if all concepts it subsume are modeled.

Notes


The distinction between indirectly_unary_invocable and
indirectly_regular_unary_invocable is purely semantic.

2022.07.31 http://cppreference.com