From 20cc71cde1afe67a4a83de76333cb858fdf93ed3 Mon Sep 17 00:00:00 2001 From: Tom Honermann Date: Sun, 21 Jul 2019 00:26:32 -0400 Subject: [PATCH] Updated the readme to note current gcc and Clang limitations. --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 97617da..20d48d6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # char8_t backward compatibility remediation - [Introduction](#introduction) +- [Requirements](#requirements) - [Remediation examples](#remediation-examples) - [String literals](#string-literals) - [Array initialization](#array-initialization) @@ -53,6 +54,20 @@ using u8string = std::string; ``` +# Requirements +The implementation of +[P0732R2](https://wg21.link/p0732 "Class Types in Non-Type Template Parameters") +in gcc 9.1.0 is incomplete and incorrectly rejects literal operator templates +declared with non-type template parameters of literal class type. This issue is +tracked by +[bug 88095](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88095 "class nontype template parameter UDL string literals doesn't accepts deduction placeholder"). This issue currently prevents use of the `U8` +macro when compiling for C++20. A patch is available. + +[P0732R2](https://wg21.link/p0732 "Class Types in Non-Type Template Parameters") +has not yet been implemented as of Clang 8. As a result, the `U8` macro can not +currently be used in `constexpr` context with Clang when compiling for C++20. + + # Remediation examples