优点
(1)常量表达式主要是允许一些计算发生在编译时,它将只做一次。
(2)它允许函数被应用在以前调用宏的所有场合。例如,你想要一个计算数组size的函数,size是10的倍数。如果不用constexpr,你需要创建一个宏或者使用模板,因为你不能用函数的返回值去声明数组的大小。但是用constexpr,你就可以调用一个constexpr函数去声明一个数组。如下:
constexpr int getDefaultArraySize(int multiplier) { return10* multiplier; } int my_array[ getDefaultArraySize( 3) ]; |
限制
-
函数中只能有一个return语句(有极少特例)
-
只能调用其它constexpr函数
-
只能使用全局constexpr变量