gpt4 book ai didi

c++ - 如何使用 constexpr 逻辑?

转载 作者:行者123 更新时间:2023-12-03 06:55:53 24 4
gpt4 key购买 nike

我想在一些代码中实现一些 constexpr 逻辑。我能够毫无问题地编译和执行这段代码。

#include <iostream>

int main(){
std::cout << "Starting c++ main" << std::endl;

constexpr int val_1 = 100;
int val_2;

if constexpr (val_1 == 100){
val_2 = 10;
}
else if constexpr (val_1 == 200){
val_2 = 20;
}

std::cout << val_2 << std::endl;
}

但实际上,val_2 也应该是一个 constexpr。如何让 val_2 成为 constexpr?我尝试了几件事,但没有成功。如果我将 val_2 声明为 constexpr,则不允许我在 if 语句中更改它的值。如果我没有在 if 语句的主体之前声明 constexpr 变量,那么它(正如预期的那样)没有在 if 之外定义声明。

最佳答案

您可以将初始化程序放在三元表达式中:

constexpr int val_2 = val_1 == 100 ? 10 : val_1 == 200 ? 20 : 0;

如果您的初始化逻辑更复杂,您可以编写一个 constexpr 函数,如下所示:

constexpr auto f(int val_1) 
{
int val_2{};

if (val_1 == 100){
val_2 = 10;
}

else if (val_1 == 200){
val_2 = 20;
}

return val_2;
}

然后:

constexpr int val_2 = f(val_1);

另外,请注意 if constexpr 应该只用于有条件地编译代码。常规控制流不需要它。

关于c++ - 如何使用 constexpr 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64434198/

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