Просто быстрый вопрос, на который я не могу найти хорошую ссылку, особенно в отношении текущих реализаций будущего стандарта C ++ 0x.
Поскольку конструкторы перемещения могут выдавать , это означает, что некоторые стандартные библиотечные функции не могут обеспечить строгую гарантию исключений (например, vector<T>::resize()
).
Было выдвинуто предложение: 1) сделать все конструкторы перемещения стандартной библиотеки "безбрасыванием" и 2) добавить проверки времени компиляции в коде пользователя, чтобы убедиться, что, например. std::pair<std::string, MyType>
определяет конструктор перемещения nothrow или вообще не использует конструктор перемещения.
Что случилось с этим предложением (особенно в отношении этого вопроса )? Как проблема «решается» в окончательном варианте?
Самое главное, что это значит для меня, когда я использую недавний GCC или MSVC 10? Обеспечивают ли эти реализации стандартной библиотеки гарантию сильных исключений, например, на. std::vector<MyTypeWithAThrowingMoveConstructor>::resize()
?
РЕДАКТИРОВАТЬ: Я не видел этот вопрос , который явно связан. Если будет достигнут консенсус по поводу того, что мой вопрос является дубликатом, закройте его. Тем не менее, меня действительно интересует, что реализовано , а не , что обсуждалось .