[Bug libstdc++/114153] std::less<> prefers operator const void*() over operator<=>() in C++20 mode

tkaminsk at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 16 17:11:53 GMT 2026


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

Tomasz Kamiński <tkaminsk at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tkaminsk at gcc dot gnu.org

--- Comment #10 from Tomasz Kamiński <tkaminsk at gcc dot gnu.org> ---
Similar problem exists for compare_three_way for type that provide
heterogeneous spaceship:
struct Compare
{
  operator int*() const;

  friend std::strong_ordering
  operator<>(Compare, int*);
}; 

Compare c; int i;
c <=> &i; // call C::operator<=>
&i <=> c; // call C::operator<=>
compare_three_way{}(c, &i): // call C::operator<=>
compare_three_way{}(&i, c): // pointer comparision


More information about the Gcc-bugs mailing list