知识卡片

constexpr双重身份

普通读书笔记卡 · 1408

内容

constexpr 对象必须以常量表达式初始化;constexpr 函数只在满足常量求值条件时产生编译期结果,也能在运行期调用。它把可用于编译期的能力写入接口,适合固定数组大小等场景;这并不等于函数每次都在编译期执行。

参考来源

- 位置:《Effective Modern C++》第3章《移步现代C++》,条款十五:尽可能的使用 constexpr(源文件:_epub-src/EPUB/text/ch004.xhtml) - 结论依据:原文分别定义 constexpr 对象与函数,并以编译期参数条件限制编译期求值。 - 原始内容:constexpr 对象是 const ,它被在编译期可知的值初始化 当传递编译期可知的值时, constexpr 函数可以产出编译期可知的结果 constexpr 对象和函数可以使用的范围比non- constexpr 对象和函数要大 constexpr 是对象和函数接口的一部分