[libcxx-commits] [PATCH] D92212: Make libcxx work according to Clang C++ Status if -fchar8_t is passed

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed Dec 2 14:26:32 PST 2020

ldionne added a comment.

In D92212#2428337 <https://reviews.llvm.org/D92212#2428337>, @mclow.lists wrote:

> I think this is the wrong direction - getting rid of `_LIBCPP_NO_HAS_CHAR8_T`
> We're making the feature macro `__cpp_lib_char8_t` always match `__cpp_char8_t`
> There are two macros for a reason.

Just to make sure I understand, your preference would be this, right? Please correct me if I'm wrong:

  #if _LIBCPP_STD_VER > 17 && defined(__cpp_char8_t)
  #  define __cpp_lib_char8_t

In other words, define the library parts of `char8_t` only when the standard is >= C++20 *and* the compiler supports `char8_t`. Is that correct? That would basically be the status quo.

Like I said above, I do agree strongly that we shouldn't try to enable C++20 features in C++17, however in this case the compiler has already decided to make this possible (by providing `-fchar8_t` that can be enabled in C++17 mode), for compatibility reasons documented in the paper. In this instance, I believe that it's worse to have the library be inconsistent with the compiler than to digress from the design principle of not backporting stuff. Thoughts?

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list