https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99086
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #1) > (In reply to crillion from comment #0) > > #include <iterator> > > > > class value_wrapper > > { > > public : > > > > bool operator<=>(const value_wrapper& rhs) const = default; > > This is a bug, the spaceship operator has to return one of > std::strong_ordering, std::weak_ordering or std::partial_ordering. That's not quite true, it can be something that std::strong_ordering is convertible to. But it can't be bool. If you're defaulting it, you probably want to just return auto and let the compiler get the type right.