
----- Mensaje original ----- De: Peter Dimov <pdimov@mmltd.net> Fecha: Jueves, Marzo 10, 2005 10:35 pm Asunto: Re: [boost] Re: Re: Re: [review] hash functions
JOAQUIN LOPEZ MU?Z wrote:
Maybe the following approach could be taken to allow for alternative implementations to be plugged into the framework: [...]
unordered_set<my_type,boost::hash<my_type,crypto_impl> > us;
The proposal is not a framework, it contains two simple tools for constructing hash_value overloads for compound types and a suite of _default_ hash functions.
Alternative implementations (who may or may not use the supplied tools) are supported by unordered_set by simply using
unordered_set< my_type, my_hash > us;
There's no need to plug them in.
The idea is that you can alter only some part of the hashing scheme and benefit of the preexisting definitions: template<typename It> std::size_t hash_range(It first,It last,crypto_impl) { ... } // third_party_type is an external type with its own // hash_value overload unordered_set< std::vector<third_party_type>, boost::hash<std::vector<third_party_type>, crypto_impl>
us;
// here, we automatically get an impl of hashing for // strings using the crypto_impl hash_range unordered_set< std::string, boost::hash<std::string, crypto_impl>
us2;
But I won't defend this to death :) I just felt like throwing the idea in. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo