Correct.
| I think the type should be incomplete within the initializer in this
| case, because it is not possible in general to compute the sizeof
| before we have parsed the initializer:
That would be too blunt a hammer. It would break the following:
int main() {
int a[] = { 0, 1, 2, 3, a[3] + 1 };
return a[4];
}
which is accepted by gcc, g++, clang, clang++ because an
lvalue-to-rvalue conversion from an object of incomplete type would be
required to initialize the last element of a. It would also break
compat with C99/C11.
-- Gaby