名前空間
変種
操作

C++ 名前付き要件: LessThanComparable

From cppreference.com
 
 
C++ 名前付き要件
 

型は<演算子で動作し、その結果は標準的な意味論を持つ必要があります。

目次

[編集] 要件

Tは、T(あるいはconst T (C++11以降))型の式abcが与えられた場合に、以下の式が有効で指定された効果を持つとき、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++標準ライブラリは以下を区別します。

  • 等価性:式 a == b の値。
  • 同値性:式 !(a < b) && !(b < a) の値。

[編集] 提案されている修正

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

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

[編集] 関連項目

順序関係を確立する二項述語
(名前付き要件)
relationが狭義の弱順序を課すことを規定する
(コンセプト) [編集]
English 日本語 中文(简体) 中文(繁體)