https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118390
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Last reconfirmed| |2025-01-09 Ever confirmed|0 |1 --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Reduced testcase: template<typename T, int N> constexpr int foo (const T (&x)[N]) { return N; } static_assert (foo ({ #embed __FILE__ limit (64) }) == 64, ""); GCC incorrectly fails with error: too many initializers for ‘const int [3]’ clang with error: excess elements in array initializer note: in initialization of temporary of type 'const int[1]' created to list-initialize this reference I guess the reason is similar, at some point we still count the RAW_DATA_CST or clang its equivalent as 1 rather than what it stands for. Will work on this tomorrow.