标准集装箱的例外要求

Exception Requirements on Standard Containers

本文关键字:集装箱 标准      更新时间:2023-10-16

C++11§23.2.1.10规定:

除非另有规定,否则定义的所有容器类型在本条款中,满足以下附加要求:

  • 如果insert((或template((函数在插入单个元素时抛出异常,则该函数没有任何效果
  • 没有erase((、clear((、pop_back((或pop_front((函数抛出异常

关于第一个要点,容器如何保证?T的构造函数可能有副作用。如果不是">对容器没有影响">

关于第二个要点,这通常调用不是noexceptallocator::deallocate(T*,size_t)。为什么要掩盖最终的例外情况?

表28指定分配器的要求之一是deallocate()"不抛出异常"。这就是标准如何使关于erase()clear()pop_back()pop_front()的断言