为什么双端队列的pop_front()和pop_back()不例外?

时间:2018-11-21 11:57:15

标签: c++ c++11 deque c++-standard-library noexcept

在C ++ 11和更高版本中,pop_front()的{​​{1}}和pop_back()不是noexcept还是被遗忘了吗?

1 个答案:

答案 0 :(得分:8)

如果我理解正确,那么该标准就不会在合约范围狭窄的函数上指定noexcept(前提是违反会导致UB)。 N3279和最近的P0884都在谈论这一点,以及如何确定某个函数是否应该noexcept(或有条件地)的问题。

std::deque的{​​{1}}和pop_front就是这种情况,但在pop_backfront上也是如此,那里没有对析构函数的调用。例如,back的{​​{1}},std::vectorpop_back都是相同的。