不C++标准的保证,这里将是从功能的值返回auto_ptr
的有效载荷时不崩溃:在C++中的值返回auto_ptr的有效载荷从功能
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测试了这个例子,没有崩溃,但我不确定它是否会与其他编译器一起工作。
有没有其他的命令不会中断**所有**的C++? – 2012-02-19 06:44:10
这很好,但auto_ptr已被弃用,所以你应该避免它。 – 2012-02-19 06:44:40
@n.m:我没有得到你,请你把你的问题展开得更详细些? – barankin 2012-02-19 06:46:23