C++ `constexpr` 的限制
constexpr
函数不能包含条件语句(if、switch)、循环(for、while)、异常处理(try、catch)等。constexpr
函数不能进行动态内存分配。constexpr
变量必须是编译时常量,即其值在程序运行期间不能被修改。constexpr
变量不能是类的成员变量,因为类的成员变量可能不是编译时常量。constexpr
变量不能是左值,因为左值在编译时无法确定其值。constexpr
函数不能有副作用,即不能修改全局变量的值或调用非constexpr
函数。constexpr
函数和变量的返回类型只能是内置类型或枚举类型,不能是自定义类型或类类型。constexpr
函数和变量的参数必须是编译时常量表达式或字面量。constexpr
函数和变量的返回值必须是编译时常量表达式或字面量。constexpr
函数和变量的定义必须在声明之前,且必须具有相同的类型和值。