https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119259
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Yes clang (with both libstdc++ and libc++) and MSVC compile the example successfully. I suppose since the defaulted operator== isn't actually being used, it shouldn't instantiate anything. That said, I'm not sure how useful it is to compile it because as soon as you try to use that defaulted operator==, all compilers agree that it's ill-formed.