constexpr 注意事项

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); 的值. 如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

Leave a Reply

Your email address will not be published. Required fields are marked *