https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94162

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It isn't clear to me what exactly disallows it, perhaps
http://eel.is/c++draft/class.spaceship#2.2
?
For auto return type
http://eel.is/c++draft/class.spaceship#4
defines what return type it should have.
If the explicit return type isn't auto, but is one of the
std::{strong,weak,partial}_ordering, we don't ICE and accept it, should we and
what behavior should it have?
#include <compare>
struct S {
  float a;
  std::strong_ordering operator<=>(const S&) const = default;
};
bool b = S{} < S{};
struct T {
  std::partial_ordering operator<=>(const T&) const = default;
};
bool c = T{} < T{};
For S, the auto return type would be std::partial_ordering and in the generated
body we just assume the floats will not be unordered.
So, for bool, shall it be accepted and handled some way, or shall it be
deleted, or result in immediate error (ill-formed)?
What about even weirder types (say float or int * or some arbitrary class)?

Reply via email to