I'm not completely sure yet but I believe I was mistaken. It's quite possible that dynamic sized arrays with automatic storage are actually standard in C++14. Apparently there is at least this proposal which made it pretty far but it's getting a bit late to actually check what became of it for the final version. Anyone want to chime in?
IIRC, it was ultimately rejected from C++14 version of the standard (time constraints, more review needed), but still on track for the next version (C++17).
I started getting suspicious after MinGW 4.9.1 even with als settings cranked up to 'as standard compliant as possible' accepted the code.
Probably because it was expected to get in the standard, so (I'm guessing) they added it in. The compiler vendors of late have been racing each other to see who can implement the latest standards the soonest, which includes implementing features that aren't yet set in stone. This is good for us, though, because it means the compilers are making rapid progress in optimized output, standard-conformity, and feature additions.
[Edit:] Here's what GCC says:
GCC says: "This feature was briefly part of the C++14 working paper, but was not part of the published standard; as a result, it has been removed from the compiler."
Additionally, "G++ supports C++1y variable length arrays. G++ has supported GNU/C99-style VLAs for a long time, but now [GCC 4.9] additionally supports initializers and lambda capture by reference. In C++1y mode G++ will complain about VLA uses that are not permitted by the draft standard, such as forming a pointer to VLA type or applying sizeof to a VLA variable. Note that it now [GCC 5.0] appears that VLAs will not be part of C++14, but will be part of a separate document and then perhaps C++17."
The bold brackets with the GCC versions are my additions.