https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66157
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- I already said that it works fine with C++ code *you* write, in any standard mode. But don't expect everyone else's C++ code (including standard library headers) to follow the old pre-1998 rules. If you use -fno-for-scope you are no longer compiling standard C++, you are compiling some non-standard dialect. That has always been true, it's not new for C++11.