C++ 名前付き要件: LessThanComparable
From cppreference.com
型は<演算子で動作し、その結果は標準的な意味論を持つ必要があります。
目次 |
[編集] 要件
型Tは、T(あるいはconst T (C++11以降))型の式a、b、cが与えられた場合に、以下の式が有効で指定された効果を持つとき、LessThanComparableを満たします。
| 式 | 型 | 効果 |
|---|---|---|
| a < b | BooleanTestable を満たす (C++20まで) |
以下のプロパティを持つ厳密弱順序関係を確立します。
|
boolean-testable をモデル化する(C++20以降) |
[編集] 注記
この要件を満たすために、組み込みの比較演算子を持たない型は、ユーザー定義のoperator<を提供する必要があります。
EqualityComparable かつ LessThanComparable の両方の型について、C++標準ライブラリは以下を区別します。
- 等価性:式 a == b の値。
- 同値性:式 !(a < b) && !(b < a) の値。
[編集] 提案されている修正
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2114 (P2167R3) |
C++98 | bool への変換可能性は、実装の期待を反映するには弱すぎた | 要件が強化された |
[編集] 関連項目
| 順序関係を確立する二項述語。 (名前付き要件) | |
| (C++20) |
relationが狭義の弱順序を課すことを規定する(コンセプト) |