以下行不会在运行时抛出异常:
boost::optional<double> dummy(boost::none);
double testValue = *dummy;
为什么boost开发人员决定在包含*
的boost::optional
上使用间接操作符( boost::none
)时不抛出?作为参考,我在上面的代码中得到了testValue
中的随机值,因为它可能是在分配内存的随机统一部分。
这可能导致无声的错误,因为您负责在使用它之前检查它的值。
发布于 2014-08-26 09:56:36
我能想到2:
这与数组边界检查的情况是一样的:拥有它很好,但是很昂贵。
https://stackoverflow.com/questions/25502728
复制相似问题