[indirect.relops] (original) (raw)

20 Memory management library [mem]

20.4 Types for composite class design [mem.composite.types]

20.4.1 Class template indirect [indirect]

20.4.1.8 Relational operators [indirect.relops]

template<class U, class AA> constexpr bool operator==(const indirect& lhs, const indirect<U, AA>& rhs) noexcept(noexcept(*lhs == *rhs));

Mandates: The expression *lhs == *rhs is well-formed and its result is convertible to bool.

Returns: If lhs is valueless or rhs is valueless,lhs.valueless_after_move() == rhs.valueless_after_move(); otherwise *lhs == *rhs.

template<class U, class AA> constexpr _synth-three-way-result_<T, U> operator<=>(const indirect& lhs, const indirect<U, AA>& rhs);

Returns: If lhs is valueless or rhs is valueless,!lhs.valueless_after_move() <=> !rhs.valueless_after_move(); otherwise_synth-three-way_(*lhs, *rhs).