operator==, <=>(std::reference_wrapper)
From cppreference.com
< cpp | utility | functional | reference wrapper
| friend constexpr bool operator==( reference_wrapper lhs, reference_wrapper rhs ); |
(1) | (C++26以降) |
| friend constexpr bool operator==( reference_wrapper lhs, reference_wrapper<const T> rhs ); |
(2) | (C++26以降) |
| friend constexpr bool operator==( reference_wrapper lhs, const T& ref ); |
(3) | (C++26以降) |
| friend constexpr auto operator<=>( reference_wrapper lhs, reference_wrapper rhs ); |
(4) | (C++26以降) |
| friend constexpr auto operator<=>( reference_wrapper lhs, reference_wrapper<const T> rhs ); |
(5) | (C++26以降) |
| friend constexpr auto operator<=>( reference_wrapper lhs, const T& ref ); |
(6) | (C++26以降) |
reference_wrapper オブジェクトに対して比較演算を実行する。
1,2) 2つの
reference_wrapper オブジェクトを比較する。オブジェクトは lhs.get() と rhs.get() が等しい場合にのみ等しいと比較される。1) このオーバーロードは、式 lhs.get() == rhs.get() が整形式であり、その結果が bool に変換可能である場合にのみ、オーバーロード解決に参加する。
2) このオーバーロードは、以下のすべての条件が満たされる場合にのみ、オーバーロード解決に参加する。
- std::is_const_v<T> が false である。
- 式 lhs.get() == rhs.get() が整形式であり、その結果が bool に変換可能である。
3)
reference_wrapper オブジェクトと参照を比較する。パラメータは lhs.get() が ref と等しい場合にのみ等しいと比較される。 このオーバーロードは、式 lhs.get() == ref が整形式であり、その結果が bool に変換可能である場合にのみ、オーバーロード解決に参加する。
4) このオーバーロードは、式 synth-three-way(lhs.get(), rhs.get()) が整形式である場合にのみ、オーバーロード解決に参加する。
5) このオーバーロードは、以下のすべての条件が満たされる場合にのみ、オーバーロード解決に参加する。
- std::is_const_v<T> が false である。
- 式 synth-three-way(lhs.get(), rhs.get()) が整形式である。
このオーバーロードは、式 synth-three-way(lhs.get(), ref) が整形式である場合にのみ、オーバーロード解決に参加する。
<, <=, >, >=, != 演算子は、それぞれ operator<=> と operator== から合成されます。
目次 |
[編集] パラメータ
| lhs, rhs | - | 比較する reference_wrapper オブジェクト |
| ref | - | reference_wrapper オブジェクトと比較する参照 |
[編集] 戻り値
1,2) lhs.get() == rhs.get()。
3) lhs.get() == ref。
4,5) synth-three-way(lhs.get(), rhs.get())。
6) synth-three-way(lhs.get(), ref)。
[編集] 例外
比較が例外をスローする場合、その例外をスローする。
[編集] 備考
operator<=> の戻り値の型は、synth-three-way-result<T> が整形式でない std::reference_wrapper<T> をインスタンス化する際にハードエラーを避けるため、return 文から推論される。
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_reference_wrapper |
202403L |
(C++26) | std::reference_wrapper の比較 |
[編集] 例
| このセクションは未完成です 理由: 例がありません |