Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个类在构造时可能会引发异常。我需要这个类的许多对象,并且我正在使用 emplace_back 在向量中构造它们。如果构造函数抛出会发生什么?
看起来这取决于调用了哪些构造函数。
根据标准中的第 23.3.7.5 节,如果自定义构造函数抛出,调用emplace_back应该无效:
emplace_back
template <class... Args> void emplace_back(Args&&... args); [...] 如果异常被 T 的复制构造函数、移动构造函数、赋值运算符或移动赋值运算符或任何 InputIterator 操作引发,则没有任何影响。
template <class... Args> void emplace_back(Args&&... args);
[...]
如果异常被 T 的复制构造函数、移动构造函数、赋值运算符或移动赋值运算符或任何 InputIterator 操作引发,则没有任何影响。