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>&> &&
           std::regular_invocable<F&, std::iter_reference_t<I>> && (since C++20)
           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.