Testujemy bibliotekę pod C ++ 11 (tj -std=c++11.). Biblioteka korzysta z auto_ptrtego 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_ptrdla C ++ 11, zachowując zgodność z C ++ 03?
Foo::Initializedo Foo::Foo.
auto_ptrzakresów (tj.std::auto_ptr), Czy musi być, czy też inteligentny wskaźnik można uzyskać z innej przestrzeni nazw?