繁体   English   中英

当构造函数抛出vector.emplace或vector.emplace_back时会发生什么?

[英]What happens when constructor throws on vector.emplace or vector.emplace_back?

我有一个类可能会在构造时抛出异常。 我需要这个类的很多对象,我在带有emplace_back的向量中构造它们。 如果构造函数抛出会发生什么?

看起来它取决于被调用的构造函数。

根据标准中的第23.3.7.5节,如果自定义构造函数抛出,则调用emplace_back应该没有效果:

 template <class... Args> void emplace_back(Args&&... args); 

[...]

如果除了复制构造函数之外抛出异常,移动构造函数,赋值运算符或T的移动赋值运算符,或者通过任何InputIterator操作都没有效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM