[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