【发布时间】:2019-09-01 21:05:14
【问题描述】:
我惊讶地发现标准 C++ std::vector::pop_back() mutator 不是 noexcept,因此允许抛出异常。很惊讶,因为它是一个销毁类型的操作,应该永远不需要分配任何资源。
它在练习时会抛出异常吗?是否允许抛出异常仅传播由向量的最后一个元素的析构函数抛出的异常?所以一个 std::vector 持有一个行为正确的类的值,它有一个 noexcept 析构函数,不会从 pop_back() 抛出异常?
【问题讨论】: