Reland "Remove std::char_traits for non-standard types"

This reverts commit fa7cec59452e65bd77a54f3b979bf962e7612f1f.

Reason for revert: The problematic uses of char_traits<uint8_t> have been removed by ag/26581364 and ag/26602055.

The C++ standard specifies that std::char_traits<T> is defined for
char, wchar_t, char8_t, char16_t, and char32_t. Upstream libc++
previously provided a base template implementation for
std::char_traits, but this was not well-thought-out. New versions of
libc++ omit this definition.

In particular, this removal means that std::char_traits<unsigned char>
is now undefined, which means that std::basic_string and
std::basic_string_view no longer work with an unsigned char element
type.

See this link for details:
https://discourse.llvm.org/t/deprecating-std-string-t-for-non-character-t/66779

Remove the base template for std::char_traits<T> preemptively to help
catch users of this now-removed extension, and prevent new ones.

Bug: http://b/175635923
Bug: http://b/329303505
Change-Id: Id9e4eda93f03da9eb4458d4d0b48649f18098779
Test: treehugger
1 file changed