Namespaces
Variants

std:: indirect_strict_weak_order

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
indirect_strict_weak_order
(C++20)
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(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 自体ではなく、 I1 I2 が参照する型に適用される点です。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
P2609R3 C++20 一部の要件が
std:: iter_value_t < I > & で定義されていたため
射影を誤って扱い、
厳密弱順序 F & との非互換性が生じた
以下のように定義
/*indirect-value-t*/ < I > して
このような射影を正しく扱う
P2997R1 C++20 indirect_strict_weak_order F &
strict_weak_order std:: iter_common_reference_t < I > で満たすことを要求
要求しない