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;
}
相关推荐
王老师青少年编程2 分钟前
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践1)
c++·记忆化搜索·搜索·信奥赛·csp-s·提高组·滑雪
light blue bird6 分钟前
3C 数码电子BOM 协同工作台组件
java·开发语言·jvm·windows·.net·桌面端
落羽的落羽7 分钟前
【项目】JsonRpc框架——功能测试、项目总结
linux·服务器·开发语言·c++·qt·算法·机器学习
ZC跨境爬虫11 分钟前
跟着 MDN 学JavaScript day_6:JavaScript 中的基础数学——数字与运算符
开发语言·前端·javascript·学习·ecmascript
Lucis__11 分钟前
图的高阶算法:从构造最小生成树到求解最短路径问题
数据结构·c++·算法·图论
小小测试开发7 小时前
安装 Python 3.10+
开发语言·人工智能·python
好评1249 小时前
【C++】智能指针全解
c++·智能指针
AAA大运重卡何师傅(专跑国道)9 小时前
【无标题】
开发语言·c#
是阿建吖!9 小时前
【Linux】信号
android·linux·c语言·c++
城北徐宫9 小时前
Linux信号深度解剖:5种产生、3张表、4次切换
linux·c++·学习