Wir testen eine Bibliothek unter C ++ 11 (dh -std=c++11
). Die Bibliothek verwendet auto_ptr
und 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_ptr
C ++ 11 zu entfernen, während die Kompatibilität mit C ++ 03 erhalten bleibt?
Foo::Initialize
in Foo::Foo
.
auto_ptr
einige der Bereiche vorhanden (dhstd::auto_ptr
müssen sie vorhanden sein oder kann der Smart Pointer aus einem anderen Namespace abgerufen werden?