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

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

29得票2回答
`std::make_optional`的作用是什么?

所有的std::make_都被C++17引入类模板参数推导(除了make_unique和make_shared)所取代。那么std::make_optional有什么意义呢?据我所知,它与std::optional的类型推导指南完全相同。是否存在一种情况,std::make_optional比...

27得票3回答
我能否将一个不可移动和不可复制的函数结果拷贝到一个可选类型中?

我想在std::optional中存储一个不可移动且不可复制的非平凡类型,但该对象由自由函数构造。(示例)struct Foo { Foo(); Foo(Foo const&) = delete; Foo(Foo&&) = delete; ...

23得票1回答
为什么std::optional的构造函数使用std::in_place?

某些std::optional的构造函数会像这样使用std::in_place_t标签参数: template< class... Args > explicit optional( std::in_place_t, Args&&... args ); 我发...

20得票3回答
std::optional::value_or() - 惰性参数求值

是否有可能以一种懒加载的方式评估std::optional::value_or(expr)参数,以便只在没有值的情况下计算expr? 如果不行,那么适当的替换是什么?

20得票1回答
如何在C++中使用std::optional?

我正在尝试使用std::optional,但我的代码出现错误。 我已经指定了#include <experimental/optional>和编译器选项为-std=c++1z,-lc++experimental。 如何使用std::experimental::optional? ...

20得票3回答
为什么std::optional::value_or()使用U&&而不是T&&?

在cppreference上,我们可以看到std::optional采用默认值U&&而不是T&&。 这使我无法编写以下代码: std::optional<std::pair<int, int>> opt; opt.value_or({...

19得票2回答
clang 5:std::optional实例化破坏了参数类型的std::is_constructible特性

检测到 clang 5 在切换到 c++17 并替换自定义的 std::optional 解决方案为标准解决方案时,出现了非常奇怪和意外的行为。由于参数类的 std::is_constructible 特性评估有误,emplace() 被禁用了。 在复制之前必须满足一些特定的前提条件: #...

19得票3回答
如何展开嵌套的std::optional?

注意:这个问题曾经被暂时标记为此问题的重复,但它并不是完全相同的,因为我特别询问std::optional。如果你关心一般情况,那么阅读这个问题仍然是一个好主意。 假设我有嵌套的optionals,类似于这样(愚蠢的玩具例子): struct Person{ const std::...

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

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