Nous testons une bibliothèque sous C ++ 11 (ie, -std=c++11
). La bibliothèque utilise auto_ptr
et ce modèle:
Foo* GetFoo()
{
autoptr<Foo> ptr(new Foo);
// Initialize Foo
ptr->Initialize(...);
// Now configure remaining attributes
ptr->SomeSetting(...);
return ptr.release();
}
C ++ 11 déconseillé auto_ptr
, nous voulons donc nous en éloigner.
Cependant, le code prend en charge à la fois C ++ 03 et C ++ 11, ce n'est donc pas aussi simple que de tirer auto_ptr
. Il convient également de mentionner que la bibliothèque n'a pas de dépendances externes. Il utilise C ++ 03; et n'utilise pas Autotools, Cmake, Boost, ...
Comment gérer les modifications de conception pour s'éloigner de auto_ptr
C ++ 11 tout en conservant la compatibilité avec C ++ 03?
Foo::Initialize
en Foo::Foo
.
auto_ptr
zones de portée (c.-à-d.std::auto_ptr
), Doivent- elles l'être ou le pointeur intelligent peut-il être obtenu à partir d'un autre espace de noms?