constexpr 变量是编译器验证的编译期就求得结果的一种变量~
一、constexpr 函数(constexpr function)指能用于常量表达式(编译期必须求出结果有一部分const 类型的值 和constexpr类型)的函数,constexpr函数必须满足如下介个要求:
1.函数的返回类型和所有形参类型必须是字面值类型,且函数体必须只且有一条return 语句,例如:
constexpr int new_sz() {return 42;}
constexpr int foo = new_sz();
编译器能在编译期验证new_sz()的值,所以可以用new_sz() 初始化constexpr类型变量foo.为了执行foo的初始化语句,编译器在编译期把constexpr函数的调用替换成其结果值,为了能在编译过程中随时展开,constexpr函数隐式地指定为内联函数. 2.允许constexpr函数返回一个不是常量的值。
constexpr size_t scale(size_t cnt){return new_sz() * cnt;} //new_sz()是一个零时量,不是constexpr
当scale函数的实参是常量表达式时,那么它的返回值