https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91541
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- This might strictly conform to the requirements, but it's stupid. Why would you do that? Allocator equality doesn't care about the value type, as evidenced by the requirement that a==b is equivalent to a==Y::rebind<T>::other(b). So if the result of == doesn't care about the value type, then why would is_always_equal depend on it?