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变量,则其和普通函数无差别