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.

Reply via email to