名前空間
変種
操作

std::partial_ordering

提供: cppreference.com
< cpp‎ | utility
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
ヘッダ <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 静的データメンバとして実装される4つの有効な値を持ちます。

メンバ定数 定義
less(inline constexpr)
[静的]
より小さい (前に順序付けされる) 関係を表す std::partial_ordering 型の有効な値
(パブリック静的メンバ定数)
equivalent(inline constexpr)
[静的]
同等 (前にも後にも順序付けされない) を表す std::partial_ordering 型の有効な値
(パブリック静的メンバ定数)
greater(inline constexpr)
[静的]
より大きい (後に順序付けされる) 関係を表す std::partial_ordering 型の有効な値
(パブリック静的メンバ定数)
unordered(inline constexpr)
[静的]
比較できない値との関係を表す std::partial_ordering 型の有効な値
(パブリック静的メンバ定数)

[編集] 変換

std::partial_ordering は他のいかなるカテゴリに暗黙に変換できなくて、 std::strong_ordering および std::weak_orderingpartial_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, /*unspecified*/ 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, /*unspecified*/ u) noexcept;
(1)
friend constexpr bool operator<(/*unspecified*/ 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, /*unspecified*/ u) noexcept;
(1)
friend constexpr bool operator<=(/*unspecified*/ 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, /*unspecified*/ u) noexcept;
(1)
friend constexpr bool operator>(/*unspecified*/ 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, /*unspecified*/ u) noexcept;
(1)
friend constexpr bool operator>=(/*unspecified*/ 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, /*unspecified*/ u) noexcept;
(1)
friend constexpr partial_ordering operator<=>(/*unspecified*/ u, partial_ordering v) noexcept;
(2)

引数

v - 調べる std::partial_ordering の値
u - リテラルのゼロを受理する任意の型の未使用な引数

戻り値

1) v
2) vless の場合は greatervgreater の場合は less、どちらでもなければ v

[編集] ノート

浮動小数点値間の組み込みの <=> 演算子はこの順序付けを使用します。 正のゼロと負のゼロは、比較すると equivalent ですが、区別可能です。 NaN の値は他のいかなる値と比較しても unordered です。

[編集]

[編集] 関連項目

6種類の演算子をすべてサポートする代用可能な三方比較の結果の型
(クラス) [edit]
6種類の演算子をすべてサポートする代用可能でない三方比較の結果の型
(クラス) [edit]