Fix _Hashtable extension

François Dumont frs.dumont@gmail.com
Sun Mar 23 20:57:00 GMT 2014


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



More information about the Libstdc++ mailing list