Testujemy bibliotekę pod C ++ 11 (tj -std=c++11
.). Biblioteka korzysta z auto_ptr
tego wzoru:
Foo* GetFoo()
{
autoptr<Foo> ptr(new Foo);
// Initialize Foo
ptr->Initialize(...);
// Now configure remaining attributes
ptr->SomeSetting(...);
return ptr.release();
}
C ++ 11 jest przestarzałe auto_ptr
, więc chcemy się od niego odejść.
Jednak kod obsługuje zarówno C ++ 03, jak i C ++ 11, więc nie jest to takie proste jak szarpanie auto_ptr
. Warto również wspomnieć, że biblioteka nie ma zewnętrznych zależności. Używa C ++ 03; i nie używa Autotools, Cmake, Boost, ...
Jak powinniśmy poradzić sobie ze zmianami w projekcie, aby odejść auto_ptr
dla C ++ 11, zachowując zgodność z C ++ 03?
Foo::Initialize
do Foo::Foo
.
auto_ptr
zakresów (tj.std::auto_ptr
), Czy musi być, czy też inteligentny wskaźnik można uzyskać z innej przestrzeni nazw?