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