-1

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

Deque 的Boost 实现说:

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

C++ 标准规定了什么?

谢谢

4

2 回答 2

2

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

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

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

2 复杂性:恒定。

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

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

于 2013-03-03T22:46:41.770 回答
0

std::allocatornoexcept正如它所说,s 的要求使它的构造函数shall not exit via an exception。但是,双端队列的构造函数可以抛出,因为它不是noexcept

于 2013-03-03T22:47:31.743 回答