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++标准。

缺陷报告 应用于 发布时的行为 正确行为
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 >
不再要求