有一个快速的问题,我找不到好的参考资料,尤其是关于未来的C++0x标准的当前实现。
由于移动构造函数可能会抛出异常,这意味着一些标准库函数无法提供强异常保证(例如vector<T>::resize()
)。
曾经有一个提案,即1)使所有标准库移动构造函数“不可抛”,以及2)在用户代码中添加编译时检查,以确保例如std::pair<std::string, MyType>
定义了一个不可抛的移动构造函数或根本没有移动构造函数。
这个提案最终怎么样了(特别是关于这个问题的回答)?该问题在最终草案中如何“解决”?
最重要的是,当我使用最近的GCC或MSVC 10时,对我有什么影响?那些标准库的实现是否对例如std::vector<MyTypeWithAThrowingMoveConstructor>::resize()
提供了强异常保证?
编辑:我没有看到这个问题,它显然是相关的。如果有关于我的问题是重复的共识,请关闭它。但是,我真的很想知道已经实现的,而不是正在讨论的。
noexcept
关键字。 - Alexandre C.