constexpr 对不变表达式的好处

Benefit of constexpr on non-changing expressions

本文关键字:表达式 constexpr      更新时间:2023-10-16

所以我理解在C++中使用constexpr是针对在编译时计算的已定义表达式,更明显的是将变量或函数声明为常量表达式。我的困惑来自于理解将其用于不会改变的简单功能的任何好处。

假设你有一个函数来简单地对一个值进行平方...

int square(int x) {
    return x * x;
}

通常,这永远不会改变或被覆盖,但是,我看到有人说最好将其定义为......

constexpr int square(int x) {
    return x * x;
}

对我来说,这似乎是一个微不足道的变化。谁能启发我声明constexpr这样简单的表达方式的严重好处?

这种更改的优点是,只要在编译时知道xsquare的结果就可以用来初始化constexpr变量或作为模板参数。