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 测试了这个例子,没有崩溃,但我不确定它是否可以与其他编译器一起使用。