我有一个可能在构造时抛出异常的类。 我需要这个类的很多对象,我在带有emplace_back的向量中构造它们。如果构造函数抛出会发生什么?
答案 0 :(得分:2)
看起来它取决于被调用的构造函数。
根据标准中的第23.3.7.5节,如果自定义构造函数抛出,则对emplace_back
的调用应该无效:
template <class... Args> void emplace_back(Args&&... args);
[...]
如果除了复制构造函数之外还抛出异常,请移动 T或的构造函数,赋值运算符或移动赋值运算符 任何InputIterator操作都没有效果。