std::partial_ordering
From cppreference.com
| ヘッダ <compare> で定義 |
||
| class partial_ordering; |
(C++20以降) | |
クラス型std::partial_orderingは、三項比較の結果型であり、
- 6つの関係演算子 (
==,!=,<,<=,>,>=) をすべて許容します。
- 代入可能性を保証しません。つまり、a と b が等価であっても、f(a) と f(b) が等価になるとは限りません。ここで、f は、引数の公開された const メンバを介してアクセス可能な、比較に関連する状態のみを読み取る関数を表します。言い換えれば、等価な値は区別可能である場合があります。
- 比較不能な値を許容します。つまり、a < b、a == b、および a > b のすべてが false になる可能性があります。
目次 |
[編集] 定数
型 std::partial_ordering には、その型の const static データメンバとして実装された 4 つの有効な値があります。
| 名前 | 定義 |
| inline constexpr std::partial_ordering less [static] |
より小さい(順序が前)関係を示す有効な値 (公開静的メンバ定数) |
| inline constexpr std::partial_ordering equivalent [static] |
等価性を示す有効な値(順序の前でも後でもない) (公開静的メンバ定数) |
| inline constexpr std::partial_ordering greater [static] |
より大きい(順序が後)関係を示す有効な値 (公開静的メンバ定数) |
| inline constexpr std::partial_ordering unordered [static] |
比較不能な値との関係を示す有効な値 (公開静的メンバ定数) |
[編集] 変換
std::partial_ordering は、他の比較カテゴリ型に暗黙的に変換することはできません。一方、std::strong_ordering と std::weak_ordering はどちらも partial_ordering に暗黙的に変換可能です。
[編集] 比較
この型の値とリテラルの0との間で比較演算子が定義されています。これにより、三項比較演算子の結果をブール関係に変換するために使用できる式 a <=> b == 0 または a <=> b < 0 をサポートします。詳細はstd::is_eq、std::is_ltなどを参照してください。
これらの関数は、通常の名前空間指定なしまたは名前空間指定ありの検索では見えず、std::partial_ordering が引数に関連付けられたクラスである場合にのみ、引数依存の名前探索によって見つけることができます。
partial_ordering を整数リテラル 0 以外のものと比較しようとするプログラムの動作は未定義です。
| operator==operator<operator>operator<=operator>=operator<=> |
ゼロまたは partial_ordering との比較(関数) |
operator==
| friend constexpr bool operator==( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr bool operator==( partial_ordering v, partial_ordering w ) noexcept = default; |
(2) | |
パラメータ
| v, w | - | std::partial_ordering の値をチェックします。 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1)
v が equivalent の場合は true、v が less、greater、または unordered の場合は false2) 両方のパラメータが同じ値を持つ場合は true、それ以外の場合は false
operator<
| friend constexpr bool operator<( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr bool operator<( /*未指定*/ u, partial_ordering v ) noexcept; |
(2) | |
パラメータ
| v | - | チェックする std::partial_ordering の値 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1)
v が less の場合は true、v が greater、equivalent、または unordered の場合は false2)
v が greater の場合は true、v が less、equivalent、または unordered の場合は falseoperator<=
| friend constexpr bool operator<=( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr bool operator<=( /*未指定*/ u, partial_ordering v ) noexcept; |
(2) | |
パラメータ
| v | - | チェックする std::partial_ordering の値 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1)
v が less または equivalent の場合は true、v が greater または unordered の場合は false2)
v が greater または equivalent の場合は true、v が less または unordered の場合は falseoperator>
| friend constexpr bool operator>( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr bool operator>( /*未指定*/ u, partial_ordering v ) noexcept; |
(2) | |
パラメータ
| v | - | チェックする std::partial_ordering の値 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1)
v が greater の場合は true、v が less、equivalent、または unordered の場合は false2)
v が less の場合は true、v が greater、equivalent、または unordered の場合は falseoperator>=
| friend constexpr bool operator>=( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr bool operator>=( /*未指定*/ u, partial_ordering v ) noexcept; |
(2) | |
パラメータ
| v | - | チェックする std::partial_ordering の値 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1)
v が greater または equivalent の場合は true、v が less または unordered の場合は false2)
v が less または equivalent の場合は true、v が greater または unordered の場合は falseoperator<=>
| friend constexpr partial_ordering operator<=>( partial_ordering v, /*未指定*/ u ) noexcept; |
(1) | |
| friend constexpr partial_ordering operator<=>( /*未指定*/ u, partial_ordering v ) noexcept; |
(2) | |
パラメータ
| v | - | チェックする std::partial_ordering の値 |
| u | - | リテラルゼロ引数を受け入れる任意の型の未使用パラメータ |
戻り値
1) v。
2)
vがlessの場合はgreater、greaterの場合はless、それ以外の場合はv。[編集] 注記
組み込みの operator<=> は、浮動小数点値に対してこの順序を使用します。正のゼロと負のゼロは equivalent と比較されますが、区別可能であり、NaN 値は他のどの値とも unordered と比較されます。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++20) |
6つすべての演算子をサポートし、置換可能である三方比較の結果型 (クラス) |
| (C++20) |
6つすべての演算子をサポートし、置換可能ではない三方比較の結果型 (クラス) |