4

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

4

1 回答 1

2

看起来这取决于调用了哪些构造函数。

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

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

[...]

如果异常被 T 的复制构造函数、移动构造函数、赋值运算符或移动赋值运算符或任何 InputIterator 操作引发,则没有任何影响。

于 2013-09-20T02:18:32.303 回答