で例外がスローされるとどうなりstd::vector<>::emplace_back()
ますか?
例えば:
class Foo {
public:
Foo(int bar) {
if (bar == 4) throw std::exception("Something went wrong");
}
}
と
std::vector<std::unique_ptr<Foo>> foo_list;
foo_list.emplace_back(new Foo(3));
try {
foo_list.emplace_back(new Foo(4));
} catch (std::exception error) {
// How bad is it?
}
// Whats inside foo_list now?
ベクトルには最初の Foo オブジェクトだけが含まれていると思います。
これは事実ですか?そして、これは標準によって保証されていますか?
また、メモリリークが発生する可能性はありますか?