名前空間
変種
操作

std::partial_ordering

From cppreference.com
< cpp‎ | utility
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
partial_ordering
(C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
ヘッダ <compare> で定義
class partial_ordering;
(C++20以降)

クラス型std::partial_orderingは、三項比較の結果型であり、

  • 6つの関係演算子 (==, !=, <, <=, >, >=) をすべて許容します。
  • 代入可能性を保証しません。つまり、ab が等価であっても、f(a)f(b) が等価になるとは限りません。ここで、f は、引数の公開された const メンバを介してアクセス可能な、比較に関連する状態のみを読み取る関数を表します。言い換えれば、等価な値は区別可能である場合があります。
  • 比較不能な値を許容します。つまり、a < ba == 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_orderingstd::weak_ordering はどちらも partial_ordering に暗黙的に変換可能です。

[編集] 比較

この型の値とリテラルの0との間で比較演算子が定義されています。これにより、三項比較演算子の結果をブール関係に変換するために使用できる式 a <=> b == 0 または a <=> b < 0 をサポートします。詳細はstd::is_eqstd::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) vequivalent の場合は truevlessgreater、または unordered の場合は false
2) 両方のパラメータが同じ値を持つ場合は 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) vless の場合は truevgreaterequivalent、または unordered の場合は false
2) vgreater の場合は truevlessequivalent、または unordered の場合は 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) vless または equivalent の場合は truevgreater または unordered の場合は false
2) vgreater または equivalent の場合は truevless または unordered の場合は 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) vgreater の場合は truevlessequivalent、または unordered の場合は false
2) vless の場合は truevgreaterequivalent、または unordered の場合は 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) vgreater または equivalent の場合は truevless または unordered の場合は false
2) vless または equivalent の場合は truevgreater または unordered の場合は false

operator<=>

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) vlessの場合はgreatergreaterの場合はless、それ以外の場合はv

[編集] 注記

組み込みの operator<=> は、浮動小数点値に対してこの順序を使用します。正のゼロと負のゼロは equivalent と比較されますが、区別可能であり、NaN 値は他のどの値とも unordered と比較されます。

[編集]

[編集] 関連項目

6つすべての演算子をサポートし、置換可能である三方比較の結果型
(クラス) [編集]
6つすべての演算子をサポートし、置換可能ではない三方比較の結果型
(クラス) [編集]
English 日本語 中文(简体) 中文(繁體)