C++入門書はそれを言います
配列の次元はコンパイル時に認識されている必要があります。つまり、次元は定数式である必要があります。
別のポイントは、
unsigned count = 42; // not a constant expression
constexpr unsigned size = 42; // a constant expression
私は、次の宣言が失敗することを期待します
a[count]; // Is an error according to Primer
それでも、そうではありません。コンパイルして正常に実行します。
また、奇妙なこと++count;
に、配列宣言の後も問題は発生しません。
-std=c++11
フラグを付けてコンパイルされたプログラムg++4.71
何故ですか?