名前空間
変種
操作

std::indirect_equivalence_relation

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

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

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

コンセプトindirect_equivalence_relationは、引数として等価性関係を呼び出すアルゴリズムの要件を指定します。std::equivalence_relationとの主な違いは、I1I2自体ではなく、I1I2が参照する型に適用されることです。

[編集] 欠陥報告

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

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