https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65641
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- Currently, the only implemented policy uses primes from a hard-coded list for the number of buckets. This makes it easy to precompute (and hard-code in the library) anything that may be helpful to speed-up modulo computation. With a number of buckets that is a power of 2, modulo computation becomes trivial (masking). However, the simplistic specialization of std::hash for pointers in libstdc++ means that all double* hash to a multiple of 8. So we would need to add some scrambling somewhere to avoid leaving most buckets empty in unordered_set<double*>.