我们正在测试C ++ 11(即-std=c++11
)下的库。该库使用auto_ptr
以下模式:
Foo* GetFoo()
{
autoptr<Foo> ptr(new Foo);
// Initialize Foo
ptr->Initialize(...);
// Now configure remaining attributes
ptr->SomeSetting(...);
return ptr.release();
}
C ++ 11已弃用auto_ptr
,因此我们希望远离它。
但是,该代码同时支持C ++ 03和C ++ 11,因此它不是yanking那样简单auto_ptr
。还值得一提的是该库没有外部依赖项。它使用C ++ 03; 并且不使用Autotools,Cmake,Boost等
auto_ptr
在保持与C ++ 03的兼容性的同时,我们应如何处理设计更改以脱离C ++ 11?
顺便说一句,你可能要折叠
—
MSalters
Foo::Initialize
成Foo::Foo
。
auto_ptr
作用域(即std::auto_ptr
),它们是否需要存在,还是可以从其他名称空间获取智能指针?