https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105626
Bug ID: 105626 Summary: -Wformat should accept u8"" strings Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: drepper.fsp+rhbz at gmail dot com Target Milestone: --- The discussion about this topic on gcc@ (https://gcc.gnu.org/pipermail/gcc/2022-May/238673.html) ended with the conclusion that gcc should not disregard the cast in code like this: #include <stdio.h> int main() { printf((const char*) u8"test %d\n", 1); return 0; } With -Wformat this code produces with gcc 12: t.cc: In function ‘int main()’: t.cc:5:24: warning: format string is not an array of type ‘char’ [-Wformat=] 5 | printf((const char*) u8"test %d\n", 1); | ^~~~~~~~~~~~~ Since a) there are no I/O functions for u8 strings in C++20 b) using u8 strings is necessary in reliable code c) it is safe to perform the analysis -Wformat does on u8 strings I suggest that u8 strings are allowed when testing for -Wformat.