名前空間
変種
操作

std::indirect_binary_predicate

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
indirect_binary_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 I1, class I2 >

concept indirect_binary_predicate =
    std::indirectly_readable<I1> &&
    std::indirectly_readable<I2> &&
    std::copy_constructible<F> &&
    std::predicate<F&, /*indirect-value-t*/<I1>, /*indirect-value-t*/<I2>> &&
    std::predicate<F&, /*indirect-value-t*/<I1>, std::iter_reference_t<I2>> &&
    std::predicate<F&, std::iter_reference_t<I1>, /*indirect-value-t*/<I2>> &&

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

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

[編集] 欠陥報告

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

DR 適用対象 公開された動作 正しい動作
P2609R3 C++20 一部の要件は std::iter_value_t<I>& の形で定義されていました。
プロジェクションの処理が不適切で、述語F&との互換性が損なわれていました。
/*indirect-value-t*/<I> の形で定義されていました。
そのようなプロジェクションを正しく処理するため。
P2997R1 C++20 indirect_binary_predicateは、F&が述語predicateを満たすことを要求していました。
std::iter_common_reference_t<I>
要求しなくなった
English 日本語 中文(简体) 中文(繁體)