Namespaces
Variants

C++ named requirements: LessThanComparable

From cppreference.net
C++ named requirements

型は < 演算子で動作し、結果は標準的なセマンティクスを持つ必要があります。

目次

要件

T は、型 T または const T (C++11以降) の式 a b および c が与えられたとき、以下の式が有効であり指定された効果を持つ場合、 LessThanComparable を満たします:

効果
a < b BooleanTestable を満たす
(C++20まで)
以下の性質を持つ 狭義弱順序 関係を確立する:
  • 全ての a について、 ! ( a < a ) true を返す。
  • もし a < b ならば、 ! ( b < a ) である。
  • もし a < b かつ b < c ならば、 a < c である。
  • equiv ( a, b ) ! ( a < b ) && ! ( b < a ) と定義するとき、 equiv ( a, b ) かつ equiv ( b, c ) ならば、 equiv ( a, c ) である。
boolean-testable をモデル化する
(C++20以降)

注記

この要件を満たすためには、組み込みの 比較演算子 を持たない型は、 ユーザー定義の operator < を提供する必要があります。

EqualityComparable LessThanComparable の両方の要件を満たす型について、C++標準ライブラリは以下の区別を行います

  • 等値性 (Equality)。これは式 a == b の値である。
  • 同値性 (Equivalence)。これは式 ! ( a < b ) && ! ( b < a ) の値である。

不具合報告

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

DR 適用対象 公開時の動作 正しい動作
LWG 2114
( P2167R3 )
C++98 bool への変換可能性が実装の期待を反映するには弱すぎた 要件を強化

関連項目

順序関係を確立する BinaryPredicate
(名前付き要件)
relation が狭義の弱順序を課すことを指定する
(コンセプト)