gpt4 book ai didi

c++ - 使用三元运算符初始化 boost::optional

转载 作者:行者123 更新时间:2023-12-04 14:44:07 26 4
gpt4 key购买 nike

是一种初始化可选的方式,比如:

bool conditional = true;
boost::optional<int> opt = conditional ? 5 : boost::none;

为什么会出现错误?:

main.cpp:31:31: error: operands to ?: have different types ‘int’ and ‘const boost::none_t’
boost::make_optional(cond ? 5 : boost::none);
| ~~~~~^~~~~~~~~~~~~~~~~

使用简单的 if else 我可以做到这一点:

boost::optional<int> opt;
if (cond)
opt = 5;
else
opt = boost::none;

最佳答案

三元运算符要求左右为相同(或可转换)类型。 none_tint不是同一类型。你可以做cond ? boost::optional<int>(5) : boost:none

我不使用 boost,所以只是根据 std::optional 猜测语法,但以下确实有效:

std::optional<int> opt = cond ? std::optional<int>(5) : std::nullopt;

关于c++ - 使用三元运算符初始化 boost::optional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66990956/

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