https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96489
--- Comment #2 from DV Henkel-Wallace <gu...@henkel-wallace.org> --- I don't think this should be marked as resolved. The bug is not the case you cited which indeed works properly as specified. The bug is that comparators are not being synthesized when the a *user supplied* operator<=> is defined. I believe this case is [class.spaceship] case (1.1). Although that case does reference [class.compare.default], it talks about the spaceship operator being "usable" which is defined, via clause (3), to have a defined binary operator of appropriate types -- _not_ claiming that only the `= default` case applies. More pragmatically the user will expect that their explicit definition of <=> will result in unspecified comparisons being synthesized. Else why define it in the first place?