When I said "if it was working properly" I didn't mean to suggest that it isn't proper for it to complain. Just that if what I was trying actually worked, it wouldn't have complained about the VLA (which I know is non-standard since I tell people that all the time).
Anyway, I obviously don't understand how extern and const work together. Perhaps they simply don't. So here'a s version of my original example that works.
The size of stack-allocated arrays needs to be constexpr (i.e. a compile-time constant). const sometimes implies constexpr, but not always. If you have declared a variable as extern const, without defining it, the value is not known so it can't be constexpr.