struct __is_fast_hash<hash<string>> : std::false_type
{ };
-#ifdef _GLIBCXX_USE_WCHAR_T
/// std::hash specialization for wstring.
template<>
struct hash<wstring>
template<>
struct __is_fast_hash<hash<wstring>> : std::false_type
{ };
-#endif
#endif /* _GLIBCXX_COMPATIBILITY_CXX0X */
#ifdef _GLIBCXX_USE_CHAR8_T
operator""s(const char* __str, size_t __len)
{ return basic_string<char>{__str, __len}; }
-#ifdef _GLIBCXX_USE_WCHAR_T
_GLIBCXX_DEFAULT_ABI_TAG
inline basic_string<wchar_t>
operator""s(const wchar_t* __str, size_t __len)
{ return basic_string<wchar_t>{__str, __len}; }
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
_GLIBCXX_DEFAULT_ABI_TAG
* for advice on how to make use of this class for @a unusual character
* types. Also, check out include/ext/pod_char_traits.h.
*/
- template<class _CharT>
+ template<typename _CharT>
struct char_traits : public __gnu_cxx::char_traits<_CharT>
{ };
not_eof(const int_type& __c) _GLIBCXX_NOEXCEPT
{ return eq_int_type(__c, eof()) ? 0 : __c; }
};
+#else // _GLIBCXX_USE_WCHAR_T
+ template<>
+ struct char_traits<wchar_t> : public __gnu_cxx::char_traits<wchar_t>
+ { };
#endif //_GLIBCXX_USE_WCHAR_T
#ifdef _GLIBCXX_USE_CHAR8_T
template<> struct char_traits<char>;
-#ifdef _GLIBCXX_USE_WCHAR_T
template<> struct char_traits<wchar_t>;
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
template<> struct char_traits<char8_t>;
/// A string of @c char
typedef basic_string<char> string;
-#ifdef _GLIBCXX_USE_WCHAR_T
/// A string of @c wchar_t
typedef basic_string<wchar_t> wstring;
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
/// A string of @c char8_t
typedef basic_string<char> string;
-#ifdef _GLIBCXX_USE_WCHAR_T
typedef basic_string<wchar_t> wstring;
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
/// A string of @c char8_t
// basic_string_view typedef names
using string_view = basic_string_view<char>;
-#ifdef _GLIBCXX_USE_WCHAR_T
using wstring_view = basic_string_view<wchar_t>;
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
using u8string_view = basic_string_view<char8_t>;
#endif
struct __is_fast_hash<hash<experimental::string_view>> : std::false_type
{ };
-#ifdef _GLIBCXX_USE_WCHAR_T
template<>
struct hash<experimental::wstring_view>
: public __hash_base<size_t, wstring>
template<>
struct __is_fast_hash<hash<experimental::wstring_view>> : std::false_type
{ };
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
template<>
operator""sv(const char* __str, size_t __len) noexcept
{ return basic_string_view<char>{__str, __len}; }
-#ifdef _GLIBCXX_USE_WCHAR_T
inline constexpr basic_string_view<wchar_t>
operator""sv(const wchar_t* __str, size_t __len) noexcept
{ return basic_string_view<wchar_t>{__str, __len}; }
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
inline constexpr basic_string_view<char8_t>
#endif
using u16string = basic_string<char16_t>;
using u32string = basic_string<char32_t>;
-#ifdef _GLIBCXX_USE_WCHAR_T
using wstring = basic_string<wchar_t>;
-#endif
} // namespace pmr
template<typename _Str>
struct hash<pmr::u32string>
: public __hash_string_base<pmr::u32string>
{ };
-#ifdef _GLIBCXX_USE_WCHAR_T
template<>
struct hash<pmr::wstring>
: public __hash_string_base<pmr::wstring>
{ };
-#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
// basic_string_view typedef names
using string_view = basic_string_view<char>;
-#ifdef _GLIBCXX_USE_WCHAR_T
using wstring_view = basic_string_view<wchar_t>;
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
using u8string_view = basic_string_view<char8_t>;
#endif
struct __is_fast_hash<hash<string_view>> : std::false_type
{ };
-#ifdef _GLIBCXX_USE_WCHAR_T
template<>
struct hash<wstring_view>
: public __hash_base<size_t, wstring_view>
template<>
struct __is_fast_hash<hash<wstring_view>> : std::false_type
{ };
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
template<>
operator""sv(const char* __str, size_t __len) noexcept
{ return basic_string_view<char>{__str, __len}; }
-#ifdef _GLIBCXX_USE_WCHAR_T
inline constexpr basic_string_view<wchar_t>
operator""sv(const wchar_t* __str, size_t __len) noexcept
{ return basic_string_view<wchar_t>{__str, __len}; }
-#endif
#ifdef _GLIBCXX_USE_CHAR8_T
inline constexpr basic_string_view<char8_t>