Arrays are a compound type (§ 2.3, p. 50). An array declarator has the form a[d], where a is the name being defined and d is the dimension of the array. The dimension specifies the number of elements and must be greater than zero. The number of elements in an array is part of the array’s type. As a result, the dimension

must be known at compile time, which means that the dimension must be a constant expression (§ 2.4.4, p. 65): 

لقد قرأت هذا من كتاب C++ primer the fifth edition يدل على أن حجم المصفوفة يجب أن يكون معروف عند الكومبيل تايم ولكن جربت أن أُحدده في وقت التشغيل فلم يحدث معي أي مشاكل فما السبب مع الملاحظة أني هذا الكتاب يتحدث عن C++11.فسؤالي هو لماذا نجح معي عند تحديدي لحجم المصفوفة في وقت التشغيل أم هذه ميزة تمت إضافتها في الإصدارات الحديثة من C++ أم هذه ميزة من المترجم وليس من قواعد اللغة؟وإذا كانت ميزة جديدة في الإصدرات الحديثة من سي بلس بلس فما الفرق عند تحديد حجم المصفوفة في وقت التشغيل و وقت الترجمة؟

هذا الكود الذي استخدمته :

#include <iostream>


int main(){


int arrsize = 0;
std::cout << "Enter the array size ";std::cin >> arrsize;
int arr[arrsize];
for(int loop = 0; loop != arrsize; loop++)
{
arr[loop] = loop;
}
for(auto v : arr)
{
std::cout << std::endl << v;
}
std::cin.ignore();
getchar();
return 0;
}