std::weak_ordering
提供: cppreference.com
ヘッダ <compare> で定義 | ||
class weak_ordering; | (C++20以上) | |
クラス型 std::weak_ordering
は以下のような三方比較の結果の型です。
- 6つの関係演算子 (==, !=, <, <=, >, >=) がすべて使用できます。
- 代用可能性を暗示しません。 a が b と同等な場合、 f(a) は f(b) と同等ではないかもしれません。 ただし f は引数のパブリック const メンバを通してアクセス可能な比較用の状態のみを読み込む関数を表します。 別の言い方をすると、同等な値を区別できる可能性があります。
- 比較できない値を許容しません。 a < b、 a == b、 a > b のいずれかひとつは true でなければなりません。
目次 |
[編集]定数
型 std::weak_ordering
はその型の const 静的データメンバとして実装される3つの有効な値を持ちます。
メンバ定数 | 定義 |
less(inline constexpr) [静的] | より小さい (前に順序付けされる) 関係を表す std::weak_ordering 型の有効な値 (パブリック静的メンバ定数) |
equivalent(inline constexpr) [静的] | 同等 (前にも後にも順序付けされない) を表す std::weak_ordering 型の有効な値 (パブリック静的メンバ定数) |
greater(inline constexpr) [静的] | より大きい (後に順序付けされる) 関係を表す std::weak_ordering 型の有効な値 (パブリック静的メンバ定数) |
[編集]変換
std::weak_ordering
は std::partial_ordering に暗黙に変換でき、 std::strong_ordering は weak_ordering に暗黙に変換できます。
operator partial_ordering | std::partial_ordering への暗黙の変換 (パブリックメンバ関数) |
std::weak_ordering::operator partial_ordering
constexpr operator partial_ordering()constnoexcept; | ||
戻り値
v
が less
の場合は std::partial_ordering::less、 v
が greater
の場合は std::partial_ordering::greater、 v
が equivalent
の場合は std::partial_ordering::equivalent。
[編集]比較
比較演算子はこの型の値とリテラル 0 との間で定義されます。 これは三方比較演算子の結果をブーリアンの関係に変換するために使用できる式 a <=> b ==0 または a <=> b <0 をサポートします。 std::is_eq、 std::is_lt などを参照してください。
これらの関数は通常の無修飾または修飾付きの名前探索に対しては可視ではなく、 std::weak_ordering
が引数の関連クラスであるときの実引数依存の名前探索によってのみ発見されます。
weak_ordering
を整数リテラル 0 以外の値と比較しようと試みるプログラムの動作は未定義です。
operator==operator<operator>operator<=operator>=operator<=> | ゼロまたは weak_ordering と比較します (関数) |
operator==
friendconstexprbool operator==(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool operator==(weak_ordering v, weak_ordering w)noexcept=default; | (2) | |
引数
v, w | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)
v
が equivalent
の場合は true、 v
が less
または greater
の場合は false。2) 両方の引数が同じ値を保持している場合は true、そうでなければ false。
operator<
friendconstexprbool operator<(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool operator<(/*unspecified*/ u, weak_ordering v)noexcept; | (2) | |
引数
v | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)
v
が less
の場合は true、 v
が greater
または equivalent
の場合は false。2)
v
が greater
の場合は true、 v
が less
または equivalent
の場合は false。 operator<=
friendconstexprbool operator<=(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool operator<=(/*unspecified*/ u, weak_ordering v)noexcept; | (2) | |
引数
v | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)
v
が less
または equivalent
の場合は true、 v
が greater
の場合は false。2)
v
が greater
または equivalent
の場合は true、 v
が less
の場合は false。 operator>
friendconstexprbool operator>(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool operator>(/*unspecified*/ u, weak_ordering v)noexcept; | (2) | |
引数
v | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)
v
が greater
の場合は true、 v
が less
または equivalent
の場合は false。2)
v
が less
の場合は true、 v
が greater
または equivalent
の場合は false。 operator>=
friendconstexprbool operator>=(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool operator>=(/*unspecified*/ u, weak_ordering v)noexcept; | (2) | |
引数
v | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)
v
が greater
または equivalent
の場合は true、 v
が less
の場合は false。2)
v
が less
または equivalent
の場合は true、 v
が greater
の場合は false。 operator<=>
friendconstexpr weak_ordering operator<=>(weak_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexpr weak_ordering operator<=>(/*unspecified*/ u, weak_ordering v)noexcept; | (2) | |
引数
v | - | 調べる std::weak_ordering の値 |
u | - | リテラルのゼロを受理する任意の型の未使用な引数 |
戻り値
1)v。
2)
v
が less
の場合は greater
、 v
が greater
の場合は less
、そうでなければ v
。 [編集]例
This section is incomplete Reason: no example |
[編集]関連項目
(C++20) | 6種類の演算子をすべてサポートする代用可能な三方比較の結果の型 (クラス) |
(C++20) | 6種類の演算子をすべてサポートし、代用可能でなく、比較不可能な値を許容する、三方比較の結果の型 (クラス) |