operator==, <=>(std::indirect)
From cppreference.com
| Defined in header <memory>
|
||
| Compare two indirect objects |
||
template< class U, class A >
constexpr bool operator==( const indirect& lhs, const indirect<U, A>& rhs )
noexcept(noexcept(*lhs == *rhs));
|
(1) | (since C++26) |
template< class U, class A >
constexpr /*synth-three-way-result*/<T, U>
operator<=>( const indirect& lhs, const indirect<U, A>& rhs );
|
(2) | (since C++26) |
| Compare an indirect object with a value |
||
template< class U >
constexpr bool operator==( const indirect& ind, const U& value )
noexcept(noexcept(*lhs == value));
|
(3) | (since C++26) |
template< class U >
constexpr /*synth-three-way-result*/<T, U>
operator<=>( const indirect& ind, const U& value );
|
(4) | (since C++26) |
Performs comparison operations on indirect objects.
For the definition of /*synth-three-way-result*/, see synth-three-way-result .
1,2) Compares two
indirect objects, the comparison result is defined as follows:
lhs
|
valueless | not valueless | ||
|---|---|---|---|---|
rhs
|
valueless | not valueless | valueless | not valueless |
operator==
|
true
|
false
|
false
|
*lhs == *rhs
|
operator<=>
|
!lhs.valueless_after_move() <=>!rhs.valueless_after_move()
|
synth-three-way (*lhs, *rhs)
| ||
1) If the expression
*lhs == *rhs is ill-formed or its result is not convertible to bool, the program is ill-formed.3,4) Compare an
indirect object with a value, the comparison result is defined as follows:
| Operator | ind is valueless
|
ind is not valueless
|
|---|---|---|
operator==
|
false
|
*ind == value
|
operator<=>
|
std::strong_ordering::less
|
synth-three-way (*ind, value)
|
3) If the expression
*ind == value is ill-formed or its result is not convertible to bool, the program is ill-formed.Parameters
| lhs, rhs, ind | - | an indirect object to compare
|
| value | - | value to compare to the owned value |
Return value
As described above.
