【发布时间】:2016-10-14 09:10:47
【问题描述】:
std::optional<T> 可以像这样初始化为分离状态:
std::optional<int> oi { nullopt };
但也像这样:
std::optional<int> oi { };
同样适用于分配(oi = {} 或 oi = nullopt)。
除了个人喜好/审美感之外,这些之间是否有区别让我更喜欢其中一个?还是根本不重要?
注意:我问的是我想显式初始化可选的情况,而不是默认初始化它(例如为了强调)。
【问题讨论】:
-
到目前为止,你是如何初始化你的空闲
std::functions 和std::shared_ptrs 和std::unique_ptrs 的? -
也可以这样初始化:
std::optional<int> oi;,如果我可以选择的话,这可能是我会使用的版本。 -
@juanchopanza:还有
std::optional<int> oi = nullopt;,如果你不是大括号中的一员,但仍然想明确表达。 (哈:“显式”,但不是explicit:-)。) -
@juanchopanza:我认为“总是自动”的人群与“到处都是大括号”的人群大致相同:-)
-
它似乎确实对性能有影响(取决于实现)。见this question。