[libc++] Keep char_traits<T> for arbitrary T around until LLVM 18

This is in response to failures seen after landing D138307.

Differential Revision: https://reviews.llvm.org/D138596

NOKEYCHECK=True
GitOrigin-RevId: 08a0faf4cd32bce6c51027ea9b5ec351747995b4
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index bbee243..63d6f29 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -100,19 +100,14 @@
 - The ``_LIBCPP_DEBUG`` macro is not honored anymore, and it is an error to try to use it. Please migrate to
   ``_LIBCPP_ENABLE_DEBUG_MODE`` instead.
 
-- A base template for ``std::char_traits`` is not provided anymore. The Standard mandates that the library
-  provides specializations for several types like ``char`` and ``wchar_t``, which libc++ does. However, libc++
-  used to additionally provide a default implementation for ``std::char_traits<T>`` for arbitrary ``T``. Not
-  only does the Standard not mandate that one is provided, but such an implementation is bound to be incorrect
-  for some types, so it has been removed. As an exception, ``std::char_traits<unsigned char>`` and
-  ``std::char_traits<signed char>`` are kept for a limited period of time and marked as deprecated to let people
-  move off of those, since we know there were some users of those. They will be removed in LLVM 18.
-
 Upcoming Deprecations and Removals
 ----------------------------------
-- The specializations of ``std::char_traits`` for ``unsigned char`` and ``signed char`` are provided until
-  LLVM 18. Those non-standard specializations are provided for a transition period and marked as deprecated
-  but will be removed in the future.
+- The base template for ``std::char_traits`` has been marked as deprecated and will be removed in LLVM 18. If
+  you are using ``std::char_traits`` with types other than ``char``, ``wchar_t``, ``char8_t``, ``char16_t``,
+  ``char32_t`` or a custom character type for which you specialized ``std::char_traits``, your code will stop
+  working when we remove the base template. The Standard does not mandate that a base template is provided,
+  and such a base template is bound to be incorrect for some types, which could currently cause unexpected
+  behavior while going undetected.
 
 API Changes
 -----------