llvm-project/libcxx/include/ext
Peter Collingbourne 8845dbd798 Do not derive __gnu_cxx::hash<T> from std::hash<T>.
Instead, define explicit specializations for the basic types listed in
the SGI documentation. This solves two problems:

 1) 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).

 2) __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.

Differential Revision: http://llvm-reviews.chandlerc.com/D2747

llvm-svn: 203070
2014-03-06 04:11:10 +00:00
..
__hash Do not derive __gnu_cxx::hash<T> from std::hash<T>. 2014-03-06 04:11:10 +00:00
hash_map [libc++] Const qualify __gnu_cxx::hash_map<>::const_iterator::pointer type. 2014-03-03 19:50:01 +00:00
hash_set G M: Provides the _LIBCPP_WARNING macro, to be used for MSVC only, since that compiler doesn't support #warning. 2013-10-04 21:14:44 +00:00