On Tue, Nov 21, 2023 at 06:17:02PM +0100, Jakub Jelinek wrote: > The > static_assert (false, "foo"_myd); > in the new testcase shows where it is valid (in C++26 and as extension in > older standards). For C++26 we could use unevaluated string literal rather > than string literal in the wording, but C++23 and earlier don't have that, > so we would need to say something like non user-defined string literal without > encoding prefix or object with 'size' and 'data' members.
Or do you want to just use error_at (location, "%<static_assert%> message must be a " "unevaluated string literal or object with " "%<size%> and %<data%> members"); wording (even when it is in C++26 term) regardless of the -std= level? Jakub