[英]why does vector.emplace_back call the move-constructor?
[英]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.