constexpr变量必须使用一个具有const属性,且在编译阶段就已知的值对其初始化。例如:
int x = 0; const int y = x; //可以使用x对cosnt变量初始化 const int z = 0; constexpr int arraySize = x; //错误,x为运行期间才确定值的变量 constexpr int arraySize = y; //错误,y为运行期间才确定值的变量 constexpr int arraySize = z; //正确,z为const变量,且编译期间就已知 constexpr int arraySize = 11; //正确,11为const变量,且编译期间就已知
对于constexpr函数,在调用时,将根据传入参数的型别,有不同的结果:
如果传入的参数都是constexpr变量,则函数返回值也是constexpr变量
如果传入的参数有一个或多个不是constexpr变量,则其和普通函数无差别