是否有任何原因导致std::deque
的pop_front()
和pop_back()
在C++ 11及更高版本中不是noexcept
还是被遗忘了?
最佳答案
如果我理解正确,那么该标准就不会在契约(Contract)狭窄的函数上指定noexcept
(前提是违反会导致UB)。 N3279和最近的P0884都在讨论这一点,以及如何确定某个函数是否应该是noexcept
(或有条件地)。std::deque
的pop_front
和pop_back
就是这种情况,但在front
和back
上却没有调用析构函数的情况。例如,std::vector
的pop_back
,front
和back
相同。