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.