summaryrefslogtreecommitdiff
path: root/base/strings/string16.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/strings/string16.h')
-rw-r--r--base/strings/string16.h21
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