struct X {
std::string s;
inline auto operator <=>(const X& x) const { return s <=> x.s; }
};
https://godbolt.org/z/E8Y5Y3bs5
В итоге определены все операции сравнения кроме ==. (Во, теперь ещё и != неопределён. Только что ж пробовал.) Наличие constructor/assignment не влияет.
И самое смешное, в точно такой же структуре (с конструкторами, объявлена внутри namespace dimgel и по-другому называется) в моём проекте не определён ещё и operator<(). Что это за долбаная магия?