diff options
Diffstat (limited to 'base/strings/string16.h')
-rw-r--r-- | base/strings/string16.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/base/strings/string16.h b/base/strings/string16.h index 30f4e3eec0..a86baa25e6 100644 --- a/base/strings/string16.h +++ b/base/strings/string16.h @@ -42,7 +42,6 @@ namespace base { typedef wchar_t char16; typedef std::wstring string16; -typedef std::char_traits<wchar_t> string16_char_traits; } // namespace base @@ -64,6 +63,11 @@ BASE_EXPORT char16* c16memmove(char16* s1, const char16* s2, size_t n); BASE_EXPORT char16* c16memcpy(char16* s1, const char16* s2, size_t n); BASE_EXPORT char16* c16memset(char16* s, char16 c, size_t n); +// This namespace contains the implementation of base::string16 along with +// things that need to be found via argument-dependent lookup from a +// base::string16. +namespace string16_internals { + struct string16_char_traits { typedef char16 char_type; typedef int int_type; @@ -134,7 +138,13 @@ struct string16_char_traits { } }; -typedef std::basic_string<char16, base::string16_char_traits> string16; +} // namespace string16_internals + +typedef std::basic_string<char16, + base::string16_internals::string16_char_traits> + string16; + +namespace string16_internals { BASE_EXPORT extern std::ostream& operator<<(std::ostream& out, const string16& str); @@ -142,6 +152,8 @@ BASE_EXPORT extern std::ostream& operator<<(std::ostream& out, // This is required by googletest to print a readable output on test failures. BASE_EXPORT extern void PrintTo(const string16& str, std::ostream* out); +} // namespace string16_internals + } // namespace base // The string class will be explicitly instantiated only once, in string16.cc. @@ -183,8 +195,9 @@ BASE_EXPORT extern void PrintTo(const string16& str, std::ostream* out); // // TODO(mark): File this bug with Apple and update this note with a bug number. -extern template -class BASE_EXPORT std::basic_string<base::char16, base::string16_char_traits>; +extern template class BASE_EXPORT + std::basic_string<base::char16, + base::string16_internals::string16_char_traits>; // Specialize std::hash for base::string16. Although the style guide forbids // this in general, it is necessary for consistency with WCHAR_T_IS_UTF16 |