https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91263
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #2) > No, a==b is equivalent to std::equal(a.begin(), a.end(), b.begin(), b.end()) > which doesn't have access to the container's equality predicate. Sorry, I wasn't paying attention when I wrote that! For unordered containers of course it's not just std::equal on the whole container, but it's still defined in terms of permutations of sub-ranges such that std::equal would be true.