(假设分配的默认构造方法不抛出)deque throw的默认构造函数是什么?
双端队列的Boost implementation说:
抛出,如果allocator_type的默认构造函数抛出
什么是C++标准的规定?
由于
(假设分配的默认构造方法不抛出)deque throw的默认构造函数是什么?
双端队列的Boost implementation说:
抛出,如果allocator_type的默认构造函数抛出
什么是C++标准的规定?
由于
的C++ 11标准(段落23.3.3.2)指定:
explicit deque(const Allocator& = Allocator());
1个作用:构造一个空的双端队列,使用指定的分配器。
2复杂性:不变。
就是这样。没有提到这个构造函数可以或不可以抛出的条件,也没有提到第23条(专用于顺序容器)指定了任何一般的异常安全保证,并且构造函数本身没有被标记为(有条件地)noexcept
。
因此,人们必须假设它可以抛出。
感谢您的回复。这有助于:) – shanxS 2013-03-03 23:02:51
@shanxS:很高兴帮助:-) – 2013-03-03 23:05:31
std::allocator
的要求使其构造函数noexcept
,因为它说shall not exit via an exception
。然而,deque的构造函数可能会抛出,因为它不是noexcept
。
这是一个“请为我阅读文档”的问题。你为什么不自己阅读文档?您可以从委员会页面 – 2013-03-03 22:45:14
下载C++标准草案大致相同? – 2013-03-03 22:45:14
@BoPersson:是的,差不多。 – shanxS 2013-03-03 23:00:47