[libc++] Add std::hash<char8_t> specialization if char8_t is enabled

Differential Revision: https://reviews.llvm.org/D92325
This commit is contained in:
Yuriy Chernyshov
2020-12-08 13:39:56 -05:00
committed by Louis Dionne
parent cd9a52b99e
commit b526d87618
2 changed files with 11 additions and 0 deletions

View File

@@ -470,6 +470,7 @@ template <> struct hash<bool>;
template <> struct hash<char>;
template <> struct hash<signed char>;
template <> struct hash<unsigned char>;
template <> struct hash<char8_t>; // since C++20
template <> struct hash<char16_t>;
template <> struct hash<char32_t>;
template <> struct hash<wchar_t>;

View File

@@ -1364,6 +1364,16 @@ struct _LIBCPP_TEMPLATE_VIS hash<unsigned char>
size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};
#ifndef _LIBCPP_NO_HAS_CHAR8_T
template <>
struct _LIBCPP_TEMPLATE_VIS hash<char8_t>
: public unary_function<char8_t, size_t>
{
_LIBCPP_INLINE_VISIBILITY
size_t operator()(char8_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
};
#endif // !_LIBCPP_NO_HAS_CHAR8_T
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
template <>