The template hash<T> is only defined for template arguments of type
char*, const char*, crope, wrope, and the built-in
integral types. [1] If you need a Hash Function with a different
argument type, you must either provide your own template
specialization or else use a different Hash Function.
All of hash's members are defined in the
Hash Function
requirements. Hash does not introduce any new members.
Notes
[1]
Technically, what this means is that the actual template
hash<T> is an empty class; the member function operator()
is defined only in the various specializations.