operator==, <=>(std::indirect)
Определено в заголовке <memory> | ||
|---|---|---|
Сравнение двух объектов indirect | ||
template< class U, class A >
constexpr bool operator==( const indirect& lhs, const indirect<U, A>& rhs )
noexcept(noexcept(*lhs == *rhs));
| (1) | (начиная с C++26) |
template< class U, class A >
constexpr /*synth-three-way-result*/<T, U>
operator<=>( const indirect& lhs, const indirect<U, A>& rhs );
| (2) | (начиная с C++26) |
Сравнение объекта indirect со значением | ||
template< class U >
constexpr bool operator==( const indirect& ind, const U& value )
noexcept(noexcept(*lhs == value));
| (3) | (начиная с C++26) |
template< class U >
constexpr /*synth-three-way-result*/<T, U>
operator<=>( const indirect& ind, const U& value );
| (4) | (начиная с C++26) |
Выполняет операции сравнения над объектами indirect.
Определение /*synth-three-way-result*/ см. в разделе synth-three-way-result .
1,2) Сравнивает два объекта
indirect; результат сравнения определяется следующим образом:
lhs | не содержит значения | содержит значение | ||
|---|---|---|---|---|
rhs | не содержит значения | содержит значение | не содержит значения | содержит значение |
| operator== |
true |
false |
false |
*lhs == *rhs |
| operator<=> |
!lhs.valueless_after_move() <=>!rhs.valueless_after_move() |
synth-three-way |
||
1) Если выражение
*lhs == *rhs некорректно или его результат не преобразуется к типу bool, программа некорректна.
3,4) Сравнивает объект
indirect со значением; результат сравнения определяется следующим образом: | Оператор |
ind не содержит значения |
ind содержит значение |
|---|---|---|
| operator== |
false |
*ind == value |
| operator<=> |
std::strong_ordering::less |
synth-three-way (*ind,value) |
3) Если выражение
*ind == value некорректно или его результат не преобразуется к типу bool, программа некорректна.Параметры
| lhs, rhs, ind | - | объект indirect для сравнения |
| value | - | значение для сравнения с хранимым значением |
Возвращаемое значение
Как описано выше.
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/indirect/operator_cmp