std::strict_weak_order (C++20 起)

来自cppreference.com
< cpp‎ | concepts
在标头 <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 是严格弱序:

  • 它非自反:对所有 xr(x, x)false
  • 它为传递:对所有 abc,若 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 是一种等价关系,而 re 所确定的等价类上引入了一种严格全序。

注解

relationstrict_weak_order 间的区别是纯语义的。

引用

  • C++23 标准(ISO/IEC 14882:2024):
  • 18.7.7 Concept strict_weak_order [concept.strictweakorder]
  • C++20 标准(ISO/IEC 14882:2020):
  • 18.7.7 Concept strict_weak_order [concept.strictweakorder]

参阅