constexpr
是常量表达式的意思. 通过编译器求值, 避免简单的函数在运行时求值, 降低性能. 常量表达式需要满足:
- 参数都是常量表达式
- 返回的结果是常量
下面看一个例子:
#include <iostream>
constexpr int add(int a, int b) {
return a + b;
}
int main(void) {
const int a = add(1, 1+1);
static_assert(a == 3, "failed");
}
如果上面去掉函数 add
前的 constexpr
修饰符, 则会报错:non-constant condition for static assertion
. 说明编译器变量 a
的值并没有求得. 加上 constexpr
则能在编译器求得 add(1,
1+1); 的值. 如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.