名前空間
変種
操作

std::indirect_unary_predicate

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
indirect_unary_predicate
(C++20)
共通アルゴリズム要件
(C++20)
(C++20)
(C++20)
ユーティリティ
(C++20)
イテレータアダプタ
Rangeアクセス
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
ヘッダ <iterator> で定義
template< class F, class I >

concept indirect_unary_predicate =
    std::indirectly_readable<I> &&
    std::copy_constructible<F> &&
    std::predicate<F&, /*indirect-value-t*/<I>> &&

    std::predicate<F&, std::iter_reference_t<I>>;
(C++20以降)

コンセプトindirect_unary_predicateは、引数として単項述語を呼び出すアルゴリズムの要件を指定します。このコンセプトとstd::predicateの主な違いは、I自体ではなく、Iが参照する型に適用されることです。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
P2609R3 C++20 要件の1つは、std::iter_value_t<I>&の観点から定義されていました。
これはプロジェクションを誤って処理し、述語F&との互換性を損なう結果となりました。
/*indirect-value-t*/<I> の形で定義されていました。
そのようなプロジェクションを正しく処理するため。
P2997R1 C++20 indirect_unary_predicateは、predicateに以下の条件で満足することを要求していました。
std::iter_common_reference_t<I>
要求しなくなった
English 日本語 中文(简体) 中文(繁體)