gpt4 book ai didi

c++ - 如果需要 consteval 怎么办?

转载 作者:行者123 更新时间:2023-12-04 01:01:06 27 4
gpt4 key购买 nike

C++23即将引入if consteval .这将在哪里使用,它与 constexpr if 有何不同? ?

最佳答案

if consteval检测是否有 constexpr函数在常量表达式上下文中调用。 proposal促使它针对一个人打算调用 consteval 的情况进行介绍。来自 constexpr 的函数功能。为了理解这意味着什么,我们考虑以下示例。
假设我们有一个 consteval功能 f :

consteval int f( int i )
{ ... }
f只能在常量表达式中调用。另一方面, constexpr功能 g可以在常量表达式中或在运行时调用。这取决于 g 的参数是否在编译时是否已知。
现在,调用 f来自 g如果 g在编译时调用可以如下完成。
constexpr int g( int i )
{
if consteval { //1
return f( i );
}
else {
return fallback();
}
}
这里 if consteval在线 //1如果 g 则触发在常量表达式中调用。
注意 //1中不能有条件.还有 if consteval 之后的大括号是强制性的。
C++20 介绍 is_constant_evaluated 用于检测函数调用是否发生在常量评估的上下文中。使用 is_constant_evaluated在我们的示例中会导致一个微妙的错误。 IE。交换 //1通过 if constexpr (std::is_constant_evaluated()) {结果 is_constant_evaluated总是返回 true .

关于c++ - 如果需要 consteval 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68213012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com