arr の前にサイズが定義されている場合、このような配列を作成することができます。
const int size = 5;
int arr[size];
ただし、size と arr がオブジェクトまたは構造体の内部にある場合、それは不可能です。
struct A{
A(int s) : size(s)
{}
const int size;
int arr[size]
};
A(5);
なぜそうなのですか?どちらの場合も、配列のサイズはコンパイル時にわかっているため、ちょっと非論理的なようです。