为什么deque的pop_front()和pop_back()不是noexcept?

Ben*_*uch 15 c++ deque c++-standard-library noexcept c++11

有什么理由说std::dequepop_front(),并pop_back()没有noexcept在C++ 11或更高或者是只是忘记了吗?

小智 8

如果我理解正确,标准没有规定noexcept具有狭义契约的函数(具有违反导致UB的前提条件).N3279和最近的P0884正在讨论这个以及如何决定一个功能是否应该noexcept(或有条件地).

这是案件std::dequepop_front,并pop_back也对frontback那里有一个析构函数没有呼叫.同为std::vectorpop_back,frontback例如.

  • 这是对的.这个想法是允许实现在检测到合同违规时抛出异常.如果这些函数被标记为no,则程序将调用std :: terminate. (2认同)