See <https://wg21.link/p2362>.
Created attachment 53509 [details] gcc13-pr106647.patch Untested implementation.
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>: https://gcc.gnu.org/g:dad2d3e003f1a9885cb1fa0f67baf50f62d57b06 commit r13-2221-gdad2d3e003f1a9885cb1fa0f67baf50f62d57b06 Author: Jakub Jelinek <jakub@redhat.com> Date: Fri Aug 26 16:06:20 2022 +0200 libcpp: Implement P2362R3 - Remove non-encodable wide character literals and multicharacter [PR106647] My understanding of the paper is that we just want to promote the CPP_WCHAR "character constant too long for its type" warning to error as it is already error for u8, u and U literals. 2022-08-26 Jakub Jelinek <jakub@redhat.com> PR c++/106647 * charset.cc (wide_str_to_charconst): Implement P2362R3 - Remove non-encodable wide character literals and multicharacter. For C++23 use CPP_DL_ERROR instead of CPP_DL_WARNING for "character constant too long for its type" diagnostics on CPP_WCHAR literals. * g++.dg/cpp23/wchar-multi1.C: New test. * g++.dg/cpp23/wchar-multi2.C: New test.
Now implemented for GCC 13.