https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113788
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Seems it is far more cases where we allow it: struct S { int a, b; }; struct U { void foo () { this int g = 1; } }; this auto h = 1; int main () { S s = { 1, 2 }; short t[3] = { 3, 4, 5 }; this auto &[a, b] = s; this auto &[c, d, e] = t; this int f = 1; for (this auto &i : t) ; }