11 Classes [class]

11.11 Comparisons [class.compare]

11.11.4 Relational operators [class.rel]

A defaulted relational operator function ([over.binary]) for some operator @ shall have a declared return type bool.
The operator function with parameters x and y is defined as deleted if
  • overload resolution ([over.match]), as applied to x <=> y, does not result in a usable function, or
  • the operator @ cannot be applied to the return type of x <=> y.
Otherwise, the operator function yields x <=> y @ 0.
struct HasNoLessThan { };

struct C {
  friend HasNoLessThan operator<=>(const C&, const C&);
  bool operator<(const C&) const = default;             // OK, function is deleted
— end example