我有多个函数返回一个 std::optional<T>。这里是一个虚构类型 MyType 的例子:struct MyType { // ... } std::optional<MyType> calculateOptional() { // ... l...
在使用 std::optional 时,经常会发生以下类似的情况: void bar(const Foo*); void baz(const std::optional<Foo>& foo) { // This is clunky to do every tim...
现在 std::experimental::optional 已被接受(或将要被接受),我想知道当通过以下运算符获取内部值时,会有什么开销和汇编生成的后果:-> * value value_or 与没有使用std::optional的情况相比,它对于计算密集型程序尤其重要。 例如,在对...
我正在审查C++-17 std::optional类模板的界面,注意到从nullopt重置和赋值的reset和assignment没有标记为constexpr。 这是疏忽还是这个操作无法被标记为constexpr的原因?
C++23的std::optional终于得到了一些非常有用的补充。 由于我对FP的了解非常基础,我想知道以下两个操作的语法(根据我的搜索,它们是两个基本的单子操作): 单子绑定 单子返回 我最好的猜测是: 单子绑定是transform 单子返回只是C++17的std::optional构...
std::optional 可以使用类似于普通指针的语法来访问其值,例如 .。 std::optional<string> some_str; if (some_str) (*some_str).c_str(); 但它也有两个函数,has_value() 和 valu...
我正在使用C++23的 std::optional 扩展,但我无法优雅地访问对象的值,如果optional 处于激活状态。 我知道我可以使用if,但那太 C++20 了。 我非常喜欢 C++23 的API更改,但我无法想到如何跳过实现identity的样板代码。 例如: #include...
以下是C++17标准中value_or()的定义: template <class U> constexpr T value_or(U&& v) const&; 作用:等同于: return bool(*this) ? **this : static_c...
如何从 std::optional 中获取值并替换为 std::nullopt(或与另一个值交换)? 例如,在 Rust 中,您可以使用 .unwrap 或类似 foo.take().unwrap() 的方法。我想在 C++ 的 optional 中做类似的事情。
在我的代码中,我检查对象是否为null/空。 有没有一种方法可以将对象设置为null? (注:原文中“check to see check”可能是笔误,我已经进行了修正)