是否有任何原因导致std::dequepop_front()pop_back()在C++ 11及更高版本中不是noexcept还是被遗忘了?

最佳答案

如果我理解正确,那么该标准就不会在契约(Contract)狭窄的函数上指定noexcept(前提是违反会导致UB)。 N3279和最近的P0884都在讨论这一点,以及如何确定某个函数是否应该是noexcept(或有条件地)。
std::dequepop_frontpop_back就是这种情况,但在frontback上却没有调用析构函数的情况。例如,std::vectorpop_backfrontback相同。

07-24 14:16