到目前为止,我仅找到一种解决方案:捕获异常,optional.value()引发。但是,当代码处于内部循环中时,C / C ++异常非常慢。
这个问题严格来说是关于<experimental/optional>
(即std::experimental::optional
),因为Clang没有<optional>
。因此,请避免使用通常的“您不应使用A,而应使用B”来节省时间。
编辑: Mat提到有一个布尔运算符,而不是has_value
答案 0 :(得分: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)不包含该TS-仅operator bool