operator==, <=>(std::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) Сравнивает два объекта
reference_wrapper. Объекты равны тогда и только тогда, когда lhs.get() и rhs.get() равны.
1) Эта перегрузка участвует в разрешении перегрузки, только если выражение
2) Эта перегрузка участвует в разрешении перегрузки, только если выполнены все следующие условия: lhs.get() == rhs.get() корректно сформировано и его результат преобразуется в bool.-
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(lhs.get(),rhs.get()) корректно сформировано.-
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<=> выводятся из операторов return, чтобы избежать ошибки компиляции при инстанцировании std::reference_wrapper<T>, если synth-three-way-result<T> некорректно сформирован.
| Макрос проверки поддержки функции | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_reference_wrapper | 202403L | (C++26) | Операции сравнения для std::reference_wrapper |
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/reference_wrapper/operator_cmp