On Wed, May 6, 2015 at 10:10 PM, François Dumont <frs.dum...@gmail.com> wrote: > Hi > > Following Marc Glisse comment #4 > on:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65641 I would like to > propose this enhancement to the hash functor for pointers. It simply gets > rid of the irrelevant bits on pointers hash code based on memory alignment > of the pointed type. The only drawback I can think of is that the type needs > to be complete at std::hash instantiation time but is it really an issue ? > > IMO it is quite obvious that the resulting hash code will be better but
If you use a real hashing function that's not true. That is, something else than GCCs pointer_hash (void *p) { return (uintptr_t)p >>3; }. Richard. > if anyone has a good method to prove it I can try to implement it. The test > I have added in quality.cc is very basic and just reflect enhancement > following Marc's comment. > > 2015-05-05 François Dumont <fdum...@gcc.gnu.org> > > * include/bits/functional_hash.h > (std::__detail::_Lowest_power_of_two<size_t>): New. > (std::hash<_Tp*>::operator()): Use latter. > * testsuite/20_util/hash/quality.cc (pointer_quality_test): New. > > Tested under Linux x86_64. > > François >