constexpr 对不变表达式的好处
Benefit of constexpr on non-changing expressions
所以我理解在C++中使用constexpr
是针对在编译时计算的已定义表达式,更明显的是将变量或函数声明为常量表达式。我的困惑来自于理解将其用于不会改变的简单功能的任何好处。
假设你有一个函数来简单地对一个值进行平方...
int square(int x) {
return x * x;
}
通常,这永远不会改变或被覆盖,但是,我看到有人说最好将其定义为......
constexpr int square(int x) {
return x * x;
}
对我来说,这似乎是一个微不足道的变化。谁能启发我声明constexpr
这样简单的表达方式的严重好处?
这种更改的优点是,只要在编译时知道x
,square
的结果就可以用来初始化constexpr
变量或作为模板参数。
相关文章:
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么constexpr的性能比正常表达式差
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 错误:constexpr 变量'struct2Var'必须由常量表达式初始化
- 生成 constexpr 字符串表,不能产生常量表达式
- 为什么带有指针子对象的文字类类型的 constexpr 表达式不能是非类型模板参数
- 使用 constexpr 或模板元编程简化较长的展开循环表达式
- lambda 表达式中引用捕获的 constexpr 变量和非显式捕获的 constexpr 变量之间的区别
- 表达式未评估为常数两个级别的constexpr函数(编译器错误?)
- 错误!Constexpr变量必须通过常数表达式constexpr初始化
- 使用折叠表达式初始化静态 constexpr 类数据成员不编译
- 关于Visual Studio 2017中有关ConstexPR表达式的汇编问题
- 使用从不打算在常量表达式中使用的 constexpr 变量有什么好处吗?
- constexpr 表达式和变量生存期,G++ 和 Clang 不同意的一个例子
- 如果 constexpr 和需要表达式进行临时概念检查
- constexpr 对不变表达式的好处
- MSVC constexpr 函数 'xyz' 不能产生常量表达式
- 使用表达式模板编译时间数组索引--constexpr
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 在常量表达式上下文中的定义之前嵌套的“constexpr”函数调用