int N = 5; int arr[N];编译器会报错: error: variable length array declaration not allowed at file scope int arr[N]; ,但 N 就是 5 ,不过编译器不知道这⼀点,于是我们需要声明为 const int N = 5 才可以。但 C++11 的 泛化常数 给出了解决⽅案
constexpr int N = 5; // N 变成了⼀个只读的值 int arr[N]; // OKconstexpr 告诉编译器这是⼀个编译期常量,甚⾄可以把⼀个函数声明为编译期常量表达式
constexpr int getFive(){ return 5; }
int arr[getFive() + 1];



