On 21/03/2014 23:59, Jonathan Wakely wrote:
On 21/03/14 22:39 +0100, François Dumont wrote:
Hi

Here is a patch to fix _Hashtable Standard extension type which is almost unusable at the moment if instantiated with anything else that the types used for the std unordered containers that is to say __detail::_Default_ranged_hash and __detail::_Mod_range_hashing.

Good catch.

Also, it seems that this specialization is missing the "hasher"
typedef:

  /// Specialization: ranged hash function, no caching hash codes.  H1
  /// and H2 are provided but ignored.  We define a dummy hash code type.
  template<typename _Key, typename _Value, typename _ExtractKey,
     typename _H1, typename _H2, typename _Hash>
struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>
    : private _Hashtable_ebo_helper<0, _ExtractKey>,
      private _Hashtable_ebo_helper<1, _Hash>
    {

From the comments I think it is intentional, is that right?

It seems intentional to me too even if I haven't written this code. In this case the user is supposed to provide a functor that gives the bucket index directly from the key so no real hasher even if there might be one in this functor.

Patch committed.

François

Reply via email to