http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53220
--- Comment #18 from Paul Pluzhnikov <ppluzhnikov at google dot com> 2012-06-20 01:59:01 UTC --- FWIW, it appears that the new error is too strict. It rejects this source, which (AFAIU) is entirely kosher: #include <stdio.h> void fn(int arr[]) { for (int j = 0; j < 5; ++j) printf("%d: %d\n", j, arr[j]); } int main() { fn((int[]) { 41, 42, 43, 44, 45 } ); return 0; } g++ -c t.cc t.cc: In function ‘int main()’: t.cc:11:37: error: taking address of temporary array fn((int[]) { 41, 42, 43, 44, 45 } ); ^ Still, I prefer to rewrite the case above, then to debug undiagnosed runtime problems from the original test case.