Namespaces
Variants

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

От ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Утилиты программы
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
Функциональные объекты
Вызов функций
(C++17)(C++23)
Тождественный функциональный объект
(C++20)
Старые binder'ы и адапторы
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
(до C++17*)(до C++17*)
(до C++17*)(до C++17*)

(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до 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

Пример