变量上的 consteval 与 constexpr

问题描述 投票:0回答:1

constexpr
consteval
有什么区别吗?

 consteval int x1 = 2;
 constexpr int x2 = 5;

使用 constexpr 比 consteval 更好吗?

c++ c++11 constexpr c++20 consteval
1个回答
36
投票

标准实际上说:

consteval 说明符仅适用于函数或函数模板的声明。

所以你的第一个示例不应该编译


但是,您可以将

consteval
constexpr
放在函数上:

constexpr int foo (int x) { return x; }
consteval int bar (int x) { return x; }

constexpr
当应用于函数时,仅仅很大程度上是建议性的(请参阅 Davis Herring 的评论) - 它对编译器说,如果可以的话,请在编译时评估此函数调用。

另一方面,

consteval
是强制性的 - 它告诉编译器,如果无法在编译时评估此函数调用,则会生成错误。

现场演示

© www.soinside.com 2019 - 2024. All rights reserved.