如何检查 是否具有值? [关闭]

问题描述 投票:-9回答:1
到目前为止,我仅找到一种解决方案:捕获异常,optional.value()引发。但是,当代码在内部循环中时,C / C ++异常非常慢。

这个问题严格来说是关于<experimental/optional>(即std::experimental::optional一个),因为Clang没有<optional>。因此,请避免使用通常的“您不应使用A,而应使用B”来节省时间。

EDIT: Mat提到有布尔运算符,而不是has_value

c++ c++17 optional stdoptional
1个回答
3
投票
这个问题严格上是关于<experimental/optional>(即std::experimental::optional一个,因为Clang没有<optional>

libc ++自版本4.0.0(已于2017年3月13日发布)开始包含<optional>,并且该版本(以及所有后续版本)都包含这两个:

constexpr bool has_value() const noexcept;

constexpr explicit operator bool() const noexcept { return has_value(); }

附录:experimental::optional没有has_value,因为指定的TS(库基础V2)不包含-仅operator bool

© www.soinside.com 2019 - 2024. All rights reserved.