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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Aaron Graham from comment #0)
> Even though `std::strong_ordering::less < 0` is perfectly legal and
> well-formed.

I disagree.

[cmp.categories.pre] p3 says:

  The relational and equality operators for the comparison category types are
specified
  with an anonymous parameter of unspecified type. This type shall be selected
by the
  implementation such that these parameters can accept literal 0 as a
corresponding
  argument.

When the comparison happens inside std::less<>::operator() it's not being
compared with a literal 0, it's an lvalue of type int by that point. That isn't
required to work.

The version with nullptr isn't required to work either (so libc++ is correct to
reject that).

Reply via email to