Wir testen eine Bibliothek unter C ++ 11 (dh -std=c++11). Die Bibliothek verwendet auto_ptrund dieses Muster:
Foo* GetFoo()
{
autoptr<Foo> ptr(new Foo);
// Initialize Foo
ptr->Initialize(...);
// Now configure remaining attributes
ptr->SomeSetting(...);
return ptr.release();
}
C ++ 11 ist veraltet auto_ptr, daher möchten wir uns davon entfernen.
Der Code unterstützt jedoch sowohl C ++ 03 als auch C ++ 11 auto_ptr. Erwähnenswert ist auch, dass die Bibliothek keine externen Abhängigkeiten aufweist. Es verwendet C ++ 03; und verwendet keine Autotools, Cmake, Boost, ...
Wie sollen wir mit den Designänderungen umgehen, um uns von auto_ptrC ++ 11 zu entfernen, während die Kompatibilität mit C ++ 03 erhalten bleibt?
Foo::Initializein Foo::Foo.
auto_ptreinige der Bereiche vorhanden (dhstd::auto_ptrmüssen sie vorhanden sein oder kann der Smart Pointer aus einem anderen Namespace abgerufen werden?