https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68703
Richard Sandiford <rsandifo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rsandifo at gcc dot gnu.org --- Comment #11 from Richard Sandiford <rsandifo at gcc dot gnu.org> --- FWIW, the following adaption of the original testcase still fails on trunk, but is accepted by Clang: template <int N = 4> struct D { using t = int __attribute__((vector_size(N * sizeof(int)))); t v; int f1() { return this->v[N-1]; } int f2() { return v[N-1]; } }; int main(int ac, char**) { D<> d = { { ac } }; return d.f1() + d.f2(); } Same with a typedef instead of "using". But that's probably just another instance of PR88600/PR58855.