常量表达式函数的使用优势


#1

constexpr 常量表达式函数 在编译期间确认结果值,并跟 宏 类似也是把结果值 直接替换掉其调用位置 相比宏来说,没有额外的开销,但更安全可靠 这种形式写起来也比 宏 看起来 如果表达复杂的情况下 更舒服一些 ,感觉倒是不错但总觉应用场景定位不准,

还请大家讨论一下各位在实际项目工作中是否会经常用到,如用到了一般都是在什么场景下的,效果如何呢?


#2

用到了! 提升性能吧


#3

constexpr 这东西我觉得用在模板这里比较多,还有就是constexpr的传播。

constexpr size_t add(size_t a, size_t b)
{
    return a + b;
}

constexpr size_t Value = add(5, 6);

template <size_t N>
size_t getValue()
{
    return N;
}

const size_t nn = getValue<add(5, 6)>();

甚至这个getValue也可以是constexpr的,然后继续传播。。

constexpr和const的区别:

const int n = 5;
int arr[n]; // 正确

int add(int a, int b) { return a + b; }
const int n = add(5, 6);
int arr[n]; // 错误!

constexpr int add(int a, int b) { return a + b; }
constexpr int n = add(5, 6);
int arr[n]; // 正确