12/06/05 19:33:33.75
>>637
new A()実行後にunique_ptrに渡される前にnew B()が呼ばれ
Bのコンストラクタが例外を出すとAは解放されない
並列関係を超えない場合はnew A()の結果が必ずunique_ptrに渡されるので、
その後Bが例外を出してもunique_ptrのデストラクタで例外安全は保たれる
↓はshared_ptrでの例、C++11/unique_ptrでも同様
URLリンク(www.boost.org)
>Avoid using unnamed shared_ptr temporaries to save typing; to see why this is dangerous
>void bad()
>{
> f(shared_ptr<int>(new int(2)), g());
>}
関数の引数で無名スマポを作ってはいけないという話