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