gpt4 book ai didi

c++ - std::optional 和采用对 T 的非常量引用的函数

转载 作者:行者123 更新时间:2023-11-30 01:11:34 26 4
gpt4 key购买 nike

假设我有一个函数

void set_value(MyType& x);

我想用一个类型的变量来调用它

std::experimental::optional<MyType> myvar

我不能简单地调用 set_value(*myvar) 因为 myvar 可能没有值。在所有情况下,如何安全地确保 myvarset_value() 的结果?

我想避免写:

decltype(my_var)::value_type tmp;
set_value(tmp);
my_var = tmp;

最佳答案

你可以这样做:

if (!my_var) { my_var.emplace(); }
set_value(*my_var);

但更好的方法是简单地将 set_value 的签名更改为:

MyType set_value();

这样你就可以写:

my_var = set_value();

输入/输出参数很糟糕。

关于c++ - std::optional<T> 和采用对 T 的非常量引用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921847/

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