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

From cppreference.net
< cpp‎ | memory‎ | indirect
 
 
Memory management library
(exposition only*)
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
(until C++20*)
(until C++20*)

Garbage collector support (until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
 
 
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.

Example