c++20 constexpr consteval

正如《Professional C++,Fifth Edition》所说:

constexpr:constant expression常量表达式,在编译器求值不能保证一定是。

cpp 复制代码
constexpr double addone(double d) {
	return d + 1;
}

constexpr double const_d{ 0 };
constexpr double const_e{ addone(const_d) };//在编译期求值
double dynamic_d{ 0 };
double e{ addone(dynamic_d) };//不在编译期求值

consteval:constant function evaluated at the front-end, 指定函数是*立即函数(immediate function)*保证在编译期求值。

cpp 复制代码
consteval int square(int x) {
    return x * x;
}

int main() {
    constexpr int result = square(5); // 正确,编译时计算
    std::cout << "Square of 5 is: " << result << std::endl;
    return 0;
}
相关推荐
EndingCoder15 分钟前
案例研究:从 JavaScript 迁移到 TypeScript
开发语言·前端·javascript·性能优化·typescript
Yyyyy123jsjs15 分钟前
如何通过免费的外汇API轻松获取实时汇率数据
开发语言·python
白露与泡影23 分钟前
2026版Java架构师面试题及答案整理汇总
java·开发语言
历程里程碑37 分钟前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
一个天蝎座 白勺 程序猿1 小时前
KingbaseES查询逻辑优化深度解析:从子查询到语义优化的全链路实践
开发语言·数据库·kingbasees·金仓数据库
skywalker_112 小时前
Java中异常
java·开发语言·异常
2501_940315262 小时前
航电oj:首字母变大写
开发语言·c++·算法
没有天赋那就反复2 小时前
JAVA 静态方法
java·开发语言
Thomas_YXQ2 小时前
Unity3D在ios平台下内存的优化详解
开发语言·macos·ios·性能优化·cocoa