hash Structure
The template class defines its method as returning val.hash_code(). The method defines a hash function that is used to map values of type type_index to a distribution of index values.
template<>
struct hash<type_index>
: public unary_function<type_index, size_t>
{ // hashes a typeinfo object
size_t operator()(type_index val) const;
};