名前空間
変種
操作

std::indirect_strict_weak_order

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
indirect_strict_weak_order
(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_strict_weak_order =
    std::indirectly_readable<I1> &&
    std::indirectly_readable<I2> &&
    std::copy_constructible<F> &&
    std::strict_weak_order
        <F&, /*indirect-value-t*/<I1>, /*indirect-value-t*/<I2>> &&
    std::strict_weak_order
        <F&, /*indirect-value-t*/<I1>, std::iter_reference_t<I2>> &&
    std::strict_weak_order
        <F&, std::iter_reference_t<I1>, /*indirect-value-t*/<I2>> &&
    std::strict_weak_order

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

コンセプトindirect_strict_weak_orderは、引数として厳密弱順序を呼び出すアルゴリズムの要件を指定します。このコンセプトとstd::strict_weak_orderの主な違いは、I1およびI2自体ではなく、それらが参照する型に適用されることです。

[編集] 不具合報告

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

DR 適用対象 公開された動作 正しい動作
P2609R3 C++20 一部の要件は、
std::iter_value_t<I>&で定義されていましたが、これはプロジェクションを誤って扱っていました。
その結果、厳密弱順序F&との互換性がありませんでした。
定義は
/*indirect-value-t*/<I>から
そのようなプロジェクションを正しく処理するため
P2997R1 C++20 indirect_strict_weak_orderF&に満たすことを要求しました
strict_weak_orderstd::iter_common_reference_t<I>
要求しなくなった
English 日本語 中文(简体) 中文(繁體)