C++笔记 - constexpr

508 阅读1分钟

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);的值。