更喜欢 constexpr 而不是 const
Prefer constexpr over const
constexpr
有时意味着const
在这些情况下,是否应该总是更喜欢constexpr
而不是const
,例如运行时加速或是否有任何缺点?
简而言之,是的,只要您的表达式可以并且应该在编译时计算,您应该更喜欢 constexpr。
有关更多详细信息,请参阅此问题:"constexpr"和"const"之间的区别
constexpr
意味着编译器知道它是常量并且可以计算其值。这允许您在编译时构造(如模板)中使用它,并可能允许编译器执行精确的优化。
如果可以constexpr
,那就顺其自然吧。
相关文章:
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 为什么我不能声明一个 constexpr 本地,而一个 const 一个工作?
- MSVC使用constexpr-if从可变模板方法中的基本模板参数中吞下const
- 有什么陷阱用 constexpr string_view 替换全局 const char[]?
- const(但不是constexpr)用作内置数组大小
- 变量上的"const constexpr"是多余的吗?
- 将 'hana::string' 转换为 'constexpr const char (&)[]'
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- constexpr 链表 - 从 const X* 到 X* 的转换无效
- 为什么 constexpr 假设我的方法就是 const
- 杀死幻数:"const int" vs "constexpr int"(或者最后没有区别)
- 我应该更喜欢在函数中的常数:constexpr const或enum
- constexpr引用非const对象
- constexpr static std::array<const char *,5> 无法使用 MSVC2013 进行编译
- 预处理器检查 constexpr const char* 函数
- 将静态 const 成员重新声明为 constexpr 是否会自动使其符合内联条件
- constexpr vs.静态const:哪个更喜欢
- const constexpr char* vs. constexpr char*