Namespaces
Variants

operator==, <=> (std::reference_wrapper)

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
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 ( ) が well-formed であり、その結果が bool に変換可能であること。
3) reference_wrapper オブジェクトと参照を比較します。パラメータは、 lhs. get ( ) ref と等しい場合にのみ等しくなります。
このオーバーロードは、式 lhs. get ( ) == ref が適切に形成され、その結果が bool に変換可能な場合にのみ、オーバーロード解決に参加します。
4,5) 二つの reference_wrapper オブジェクトを synth-three-way を用いて比較します。
4) このオーバーロードは、式 synth-three-way ( lhs. get ( ) , rhs. get ( ) ) が well-formed である場合にのみ、オーバーロード解決に参加します。
5) このオーバーロードは、以下の全ての条件が満たされる場合にのみオーバーロード解決に参加します:
6) reference_wrapper オブジェクトと参照を synth-three-way を使用して比較します。
このオーバーロードは、式 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 <=> の戻り値型は、 戻り値文 から return によって推論され、 std:: reference_wrapper < T > synth-three-way-result <T> が不適格な場合にインスタンス化時のハードエラーを回避します。

機能テスト マクロ 標準 機能
__cpp_lib_reference_wrapper 202403L (C++26) std::reference_wrapper の比較