std::strict_weak_order (C++20 起)
来自cppreference.com
在标头 <concepts> 定义
|
||
template< class R, class T, class U > concept strict_weak_order = std::relation<R, T, U>; |
(C++20 起) | |
概念 strict_weak_order<R, T, U>
指定 relation
R
在其实参上施加一种严格弱序。
语义要求
若符合下列条件,则关系 r 是严格弱序:
- 它非自反:对所有 x,r(x, x) 为 false;
- 它为传递:对所有 a、b 和 c,若 r(a, b) 与 r(b, c) 均为 true,则 r(a, c) 为 true;
- 令 e(a, b) 为 !r(a, b) && !r(b, a),则 e 为传递:e(a, b) && e(b, c) 蕴含 e(a, c)。
在这些条件下,能证明 e 是一种等价关系,而 r 在 e 所确定的等价类上引入了一种严格全序。
注解
relation
与 strict_weak_order
间的区别是纯语义的。
引用
- C++23 标准(ISO/IEC 14882:2024):
- 18.7.7 Concept
strict_weak_order
[concept.strictweakorder]
- 18.7.7 Concept
- C++20 标准(ISO/IEC 14882:2020):
- 18.7.7 Concept
strict_weak_order
[concept.strictweakorder]
- 18.7.7 Concept