Bonjour,

j'ai encore un peu de mal avec unique_ptr, et j'ai du mal à articuler mes vieux patterns avec.

Voilà, j'ai un conteneur qui contient des unique_ptr. On va dire que le code est comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
class Dum;
 
typedef std::vector<std::unique_ptr<Dum>> MyContainer;
A côté de ça, j'ai une factory qui me construit des objets de type Dum, on va dire que le code est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class DumFactory
{
public:
   static std::unique_ptr<Dum> BuildDum();
};
Je voudrais pouvoir créer mon conteneur en 2 temps:
1. Je définis sa taille (donc j'alloue la mémoire nécessaire pour les unique_ptr)
2. Je construis chaque élément un par un
Le code devrait donc ressembler à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
MyContainer container(size);
for (auto it=container.begin(); it!=container.end(); ++it) // je ne suis pas encore passé au for_each...
   it->swap( DumFactory::BuildDum() );
Le problème avec le code ci-dessus, si j'ai bien compris, c'est que le swap n'appelle pas le destructeur de Dum, donc je risque d'avoir des fuites mémoire, non?