Remove std::char_traits for non-standard types

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
Test: treehugger
Change-Id: Ib4356e07fe87aa664a4a522388bb10d55efcc2d9
1 file changed