const表示“只读”,而constexpr才是“常量”或是常量表达式,编译器在编译程序时可以顺带将其结果计算出来,无需等到程序运行阶段时
const int itest(const int a)
{
return a + 1;
}
constexpr int itest1(const int a)
{
return a + 1;
}
int main()
{
//int arr[itest(1)];//error
int arr1[itest1(4)];//ok
cout << sizeof(arr1) / sizeof(arr1[0]) << endl;
system("pause");
return 0;
}
同理,如果传参被当作初始化容器使用,也应该用constexpr
来代替const