Instead, define explicit specializations for the basic types listed in
the SGI documentation. This solves two problems:
- Helps avoid silent ODR violations caused by the absence of a user-supplied __gnu_cxx::hash specialization in cases where a std::hash specialization exists (e.g. for std::string).
- gnu_cxx::hash semantics are slightly different to those of std::hash (for example, the former may dereference a pointer argument) so it is inappropriate for gnu_cxx::hash to receive std::hash specializations by default.