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;
}
相关推荐
月夜的风吹雨9 小时前
【 C++哈希容器】:unordered_map与unordered_set深度解析
c++·哈希算法·unordered_map·unordered_set
b***74889 小时前
PHP在电子商务系统中的构建
开发语言·php
岚天start10 小时前
Java程序生成Heap Dump堆内存快照文件的多种方法
开发语言·python·pycharm
天马行空-10 小时前
ES 精准匹配 和 模糊查询的实现方式
java·开发语言
Z***258010 小时前
Java计算机视觉
java·开发语言·计算机视觉
Tiger_shl10 小时前
SqlConnection、SqlCommand 和 SqlDataAdapter
开发语言·数据库·c#
一点事10 小时前
ruoyi:集成mybatisplus实现mybatis增强
java·开发语言·mybatis
你的冰西瓜10 小时前
C++14 新特性详解:相较于 C++11 的主要改进
开发语言·c++·stl
linksinke10 小时前
Mapstruct引发的 Caused by: java.lang.NumberFormatException: For input string: ““
java·开发语言·exception·mapstruct·numberformat·不能为空
无限进步_10 小时前
C语言单向链表实现详解:从基础操作到完整测试
c语言·开发语言·数据结构·c++·算法·链表·visual studio