auto_ptr
C++ 標準は、関数から値によって のペイロードを返すときに、ここでクラッシュしないことを保証しますか?
class Foo { ... };
std::auto_ptr<Foo> createFoo() {
return std::auto_ptr<Foo>(new Foo(...));
}
...
Foo getFoo() {
std::auto_ptr<Foo> foo(createFoo());
return *foo; /// would be here a crash?
}
/// main
const Foo& foo(getFoo());
標準に従ってここで何が起こっているのですか:*foo
コピーされ、次にfoo
破棄され、最後return
に実行されますか? または、ステップの別の順序がありますか?
この例を GCC でテストしましたが、クラッシュはありませんでしたが、別のコンパイラで動作するかどうかはわかりません。