2013-03-03 84 views
-1

(假设分配的默认构造方法不抛出)deque throw的默认构造函数是什么?

双端队列的Boost implementation说:

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

什么是C++标准的规定?

由于

+0

这是一个“请为我阅读文档”的问题。你为什么不自己阅读文档?您可以从委员会页面 – 2013-03-03 22:45:14

+0

下载C++标准草案大致相同? – 2013-03-03 22:45:14

+0

@BoPersson:是的,差不多。 – shanxS 2013-03-03 23:00:47

回答

2

的C++ 11标准(段落23.3.3.2)指定:

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

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

2复杂性:不变。

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

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

+0

感谢您的回复。这有助于:) – shanxS 2013-03-03 23:02:51

+0

@shanxS:很高兴帮助:-) – 2013-03-03 23:05:31

0

std::allocator的要求使其构造函数noexcept,因为它说shall not exit via an exception。然而,deque的构造函数可能会抛出,因为它不是noexcept

+0

感谢您的回复。它只是安迪早些时候回答,所以我选择他的回答作为答案。 :) – shanxS 2013-03-03 23:09:52

+0

@shanxS:没问题,[这里是最新的C++标准草案的链接](https://github.com/cplusplus/draft/tree/master/papers),所以你可以检查自己。 – 2013-03-03 23:11:25

+0

很酷,非常感谢! – shanxS 2013-03-03 23:24:43

相关问题