То, что вы написали, действительно в c99 , но не допустимо c ++ .
Я, конечно, говорю о том, что вы используете VLA , а не полный фрагмент.
При компиляции с использованием g++ -pedantic -ansi -Wall
мы получаем следующее предупреждение;
foo.cpp: In member function 'void Test::foo()':
foo.cpp:18:23: warning: ISO C++ forbids variable length array 'array' [-Wvla]
Как упоминалось в приведенном выше предупреждении, используемый вами шаблон часто называют массивом переменной длины , который стандарт в C99 и "разрешен" в C ++ через расширение g ++.
Я бы порекомендовал вам использовать контейнер STL вместо хаков, как эти, по одной единственной причине; то, что вы делаете, не является законным, и поэтому не гарантируется, что вы будете переносимыми кросс-компиляторами.