Sil*_*ash 14 c++ option-type c++17 stdoptional
实际上如何从可选项中获取值?意思是取得 中的值的所有权std::optional并将其替换为std::nullopt(或将其交换为另一个值)?
例如,在 Rust 中,您可以.unwrap执行Option或执行类似的操作foo.take().unwrap()。我正在尝试用 C++ 做类似的事情optional。
康桓瑋*_*康桓瑋 12
operator*/value()返回对 所持有值的引用optional,因此您可以简单地使用std::move将其移动到临时变量
std::optional<std::string> opt = "abc";
// "take" the contained value by calling operator* on a rvalue to optional
auto taken = *std::move(opt);
Run Code Online (Sandbox Code Playgroud)
这将调用 的右值引用重载operator*(),它optional,返回对所包含值的右值引用。
您还可以直接对左值std::move的返回值执行操作,这会将所包含值的左值引用转换为右值operator*()optional
auto taken = std::move(*opt);
Run Code Online (Sandbox Code Playgroud)