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) Сравнивает два объекта reference_wrapper с использованием synth-three-way .
4) Эта перегрузка участвует в разрешении перегрузки только если выражение synth-three-way ( lhs. get ( ) , rhs. get ( ) ) корректно сформировано.
5) Эта перегрузка участвует в разрешении перегрузки только при выполнении всех следующих условий:
  • std:: is_const_v < T > имеет значение false .
  • Выражение synth-three-way ( lhs. get ( ) , rhs. get ( ) ) является корректно сформированным.
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

Пример