在 C++20 中,引入了 consteval
关键字,用于指示一个函数必须在编译时进行计算。下面是一个简单的示例,展示如何使用 consteval
实现编译期计算:
#include<iostream>
consteval int square(int x) {
return x * x;
}
int main() {
constexpr int a = 5;
constexpr int b = square(a); // 这里的 square 函数会在编译期计算
std::cout << "The square of " << a << " is " << b << std::endl;
return 0;
}
在上面的代码中,我们定义了一个 consteval
函数 square
,它接受一个整数参数并返回它的平方。然后,在 main
函数中,我们使用 constexpr
关键字声明了一个常量 a
,并将其值设置为 5。接下来,我们调用 square
函数计算 a
的平方,并将结果存储在另一个 constexpr
变量 b
中。由于 square
函数被声明为 consteval
,因此它的计算将在编译期完成。
最后,我们使用 std::cout
输出结果,可以看到 b
的值已经在编译期计算好了。