Stiamo testando una libreria in C ++ 11 (ovvero, -std=c++11
). La libreria utilizza auto_ptr
e questo modello:
Foo* GetFoo()
{
autoptr<Foo> ptr(new Foo);
// Initialize Foo
ptr->Initialize(...);
// Now configure remaining attributes
ptr->SomeSetting(...);
return ptr.release();
}
C ++ 11 obsoleto auto_ptr
, quindi vogliamo allontanarci da esso.
Tuttavia, il codice supporta sia C ++ 03 che C ++ 11, quindi non è semplice come lo strappo auto_ptr
. Vale anche la pena ricordare che la biblioteca non ha dipendenze esterne. Utilizza C ++ 03; e non usa Autotools, Cmake, Boost, ...
Come dovremmo gestire le modifiche alla progettazione per allontanarci da auto_ptr
C ++ 11 mantenendo la compatibilità con C ++ 03?
Foo::Initialize
in Foo::Foo
.
auto_ptr
ambiti (ovverostd::auto_ptr
), devono essere o può essere ottenuto il puntatore intelligente da qualche altro spazio dei nomi?