deque的默认构造函数是否抛出?

时间:2013-03-03 22:35:16

标签: c++ stl deque

(假设分配器的默认构造函数不抛出)

Deque的

Boost implementation说:

  

如果allocator_type的默认构造函数抛出

,则抛出

C ++标准指定了什么?

由于

2 个答案:

答案 0 :(得分:2)

C ++ 11标准(第23.3.3.2段)规定:

explicit deque(const Allocator& = Allocator());
  

1效果:使用指定的分配器构造一个空的双端队列。

     

2复杂性:常数。

就是这样。没有提到这个构造函数可能抛出或不抛出的条件,第23条(专用于序列容器)也没有指定任何一般的异常安全保证,并且构造函数本身没有标记为(有条件的)noexcept

因此,必须假设它可以抛出。

答案 1 :(得分:0)

std::allocator的要求使其构造函数noexcept成为shall not exit via an exception。但是,deque的构造函数可以抛出,因为它不是noexcept