https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78420
--- Comment #7 from Tomasz KamiĆski <tomaszkam at gmail dot com> --- > No, it's very much allowed to do that. But I'm skeptical that it's allowed > to turn !(a<b)&&!(b<a) into false when a<b and b<a are both false. Notice that I am concerned about !std::less<T*>{}(a,b) && !std::less<T*>(b,a) being false, when std::less<T*>{}(a,b) and std::less<T*>{}(b,a) are both false, and in contrast to raw operator<, std::less is required to provide total order, which is no longer the case. And my complain, is about behavior of std::less<T*>, that is not standard compliant. If it can be changed without changing <, I am fine with it.