74、泛化的常量表达式
还记得刚开始学习 C++ 给你的苦恼吗?你看:
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];Last updated