std :: optional operator *()和operator->() - 未定义的行为

时间:2017-05-03 17:12:33

标签: c++

在未初始化实例时,同时具有operator *()和operator->() - 未定义行为的动机是什么?

为什么不将它视为错误并抛出异常?

3 个答案:

答案 0 :(得分:1)

运行时性能。

proposal, revision 4,其中说:

  

对于已脱离的对象使用间接运算符是未定义的   行为。此行为可提供最大的运行时性能。

答案 1 :(得分:0)

我猜它们是如此低级(它只是编译器的内存访问),异常处理对于这种性能价格低廉的方法来说是一种过度杀伤。

答案 2 :(得分:0)

表现基本上。不检查是否需要无效值,无需例外。如果你想要例外,那就是value方法。