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) 比较两个 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,5) 使用 synth-three-way 比较两个 reference_wrapper 对象。
4) 此重载仅当表达式 synth-three-way ( lhs. get ( ) , rhs. get ( ) ) 格式正确时才参与重载决议。
5) 此重载仅在满足以下所有条件时参与重载决议:
6) 使用 synth-three-way reference_wrapper 对象与引用进行比较。
仅当表达式 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 的比较操作

示例