11得票5回答
如何在if语句中最好地测试和解包std :: optional

我有多个函数返回一个 std::optional<T>。这里是一个虚构类型 MyType 的例子:struct MyType { // ... } std::optional<MyType> calculateOptional() { // ... l...

7得票2回答
为什么std::optional没有内置的方法来获取指针?

在使用 std::optional 时,经常会发生以下类似的情况: void bar(const Foo*); void baz(const std::optional<Foo>& foo) { // This is clunky to do every tim...

17得票2回答
std::optional<T>的开销是多少?

现在 std::experimental::optional 已被接受(或将要被接受),我想知道当通过以下运算符获取内部值时,会有什么开销和汇编生成的后果:-&gt; * value value_or 与没有使用std::optional的情况相比,它对于计算密集型程序尤其重要。 例如,在对...

11得票1回答
可计算的 std::optional 重置

我正在审查C++-17 std::optional类模板的界面,注意到从nullopt重置和赋值的reset和assignment没有标记为constexpr。 这是疏忽还是这个操作无法被标记为constexpr的原因?

14得票3回答
C++23 optional 的单子绑定和单子返回是什么?

C++23的std::optional终于得到了一些非常有用的补充。 由于我对FP的了解非常基础,我想知道以下两个操作的语法(根据我的搜索,它们是两个基本的单子操作): 单子绑定 单子返回 我最好的猜测是: 单子绑定是transform 单子返回只是C++17的std::optional构...

11得票2回答
使用std::optional作为常规指针 VS 使用has_value()和value

std::optional 可以使用类似于普通指针的语法来访问其值,例如 .。 std::optional&lt;string&gt; some_str; if (some_str) (*some_str).c_str(); 但它也有两个函数,has_value() 和 valu...

7得票1回答
如何在C++23的std::optional中访问包含的值,而不需要编写身份模板代码?

我正在使用C++23的 std::optional 扩展,但我无法优雅地访问对象的值,如果optional 处于激活状态。 我知道我可以使用if,但那太 C++20 了。 我非常喜欢 C++23 的API更改,但我无法想到如何跳过实现identity的样板代码。 例如: #include...

9得票1回答
std::optional::value_or()是否有任何因素阻止其成为有条件的noexcept?

以下是C++17标准中value_or()的定义: template &lt;class U&gt; constexpr T value_or(U&amp;&amp; v) const&amp;; 作用:等同于: return bool(*this) ? **this : static_c...

14得票2回答
从std::optional中获取值

如何从 std::optional 中获取值并替换为 std::nullopt(或与另一个值交换)? 例如,在 Rust 中,您可以使用 .unwrap 或类似 foo.take().unwrap() 的方法。我想在 C++ 的 optional 中做类似的事情。

58得票6回答
能否将一个对象设置为null?

在我的代码中,我检查对象是否为null/空。 有没有一种方法可以将对象设置为null? (注:原文中“check to see check”可能是笔误,我已经进行了修正)