2013-03-03 2 views
-1

(конструктор Предполагая, что Allocator по умолчанию не бросает)Создает ли по умолчанию конструктор deque throw?

Boost implementation из Deque говорит:

Броски, если конструктор по умолчанию allocator_type бросает

Что C++ стандарт указать?

Благодаря

+0

это вопрос «пожалуйста, прочтите документацию для меня». почему вы сами не читаете документацию? вы можете загрузить черновик стандарта C++ со страницы комитета –

+0

О том же? –

+0

@BoPersson: да, примерно то же самое. – shanxS

ответ

2

C++ 11 Стандарт (пункт 23.3.3.2) определяет:

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

1 Эффекты: Создает пустой Deque, используя указанный аллокатора.

2 Сложность: постоянная.

Всё. Не упоминаются условия, при которых этот конструктор может или не может выбрасывать, а также раздел 23 (предназначенный для контейнеров последовательностей) не указывает никаких общих гарантий безопасности исключений, а сам конструктор не помечен как (условно) noexcept.

Следовательно, нужно просто предположить, что он может бросить.

+0

Спасибо за ответ. Это помогает :) – shanxS

+0

@shanxS: Рад, что это помогло :-) –

0

std::allocator s требования составляют его конструкторы noexcept, как сказано shall not exit via an exception. Однако конструктор deque может бросать, поскольку это не noexcept.

+0

Спасибо за ответ. Именно так Энди ответил раньше, поэтому я выбираю его ответ в качестве ответа. :) – shanxS

+0

@shanxS: Нет проблем, [здесь ссылка на последний стандартный проект C++] (https://github.com/cplusplus/draft/tree/master/papers), чтобы вы могли проверить себя. –

+0

круто, спасибо большое! – shanxS

Смежные вопросы