C++ 参考手册

位置:首页 > C++ 参考手册 >迭代器库 > std::indirect_unary_invocable, std::indirectly_regular_unary_invocable

concept indirectly_unary_invocable =
  std::indirectly_readable<I> &&
  std::copy_constructible<F> &&
  std::invocable<F&, iter_value_t<I>&> &&
  std::invocable<F&, iter_reference_t<I>> &&
  std::invocable<F&, 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>>>;
(C++20 起)
template< class F, class I >

  concept indirectly_regular_unary_invocable =
    std::indirectly_readable<I> &&
    std::copy_constructible<F> &&
    std::regular_invocable<F&, iter_value_t<I>&> &&
    std::regular_invocable<F&, iter_reference_t<I>> &&
    std::regular_invocable<F&, 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>>>;
(C++20 起)

概念 indirectly_unary_invocableindirectly_regular_unary_invocable 指定调用作为其实参的(正则)一元可调用对象的算法的要求。这些概念与 std::invocable 间的关键差异是它们应用到 I 所引用的类型,而非 I 自身。

语义要求

每个概念为 FI 所实现,仅若其所蕴含的所有概念均得到实现。

注解

indirectly_unary_invocableindirectly_regular_unary_invocable 间的区别是纯语义的。