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;
}
相关推荐
练习时长一年7 小时前
Jdk反射优化
java·开发语言
Turnsole_y7 小时前
pytest与Selenium结合使用指南
开发语言·python
郝学胜-神的一滴8 小时前
深入解析C++命令模式:设计原理与实际应用
开发语言·c++·程序人生·软件工程·命令模式
ShineSpark8 小时前
Crashpad介绍
c++·windows
ʚ希希ɞ ྀ8 小时前
单词接龙----图论
开发语言·javascript·ecmascript
散峰而望8 小时前
基本魔法语言数组 (一) (C语言)
c语言·开发语言·编辑器·github·visual studio code·visual studio
苏纪云8 小时前
算法<C++>——双指针 | 滑动窗口
数据结构·c++·算法·双指针·滑动窗口
MATLAB代码顾问9 小时前
MATLAB实现模糊PID控制
开发语言·matlab
虾说羊9 小时前
ssm面试题梳理
java·开发语言·rpc
Liudef069 小时前
基于Java的LLM长上下文数据预处理方案:实现128k上下文智能数据选择
java·开发语言·人工智能