Comment faire respecter la sémantique de déplacement lorsqu'un vecteur pousse?

J'ai un std::vector des objets d'une certaine classe A. La classe est non-trivial et a copier les constructeurs et constructeurs de déplacement définie.

std::vector<A>  myvec;

Si je remplir le vecteur avec A objets (en utilisant par exemple myvec.push_back(a)), le vecteur va croître en taille, en utilisant le constructeur de copie A( const A&) pour instancier de nouvelles copies des éléments d'un vecteur.

Je peux en quelque sorte faire valoir ce que de le déplacer, le constructeur de la classe A est commencer utilisée à la place?

Vous pouvez, en utilisant un mouvement conscient de vecteur de mise en œuvre.
Pouvez-vous s'il vous plaît être un peu plus spécifique comment atteindre cet objectif?
Il vous suffit d'utiliser un mouvement conscient de vecteur de mise en œuvre. Il semble que votre bibliothèque standard de mise en œuvre (qui est-il d'ailleur?) n'est pas le déplacer. Vous pouvez essayer avec move-connaissance des conteneurs à partir de Boost.
Eh bien, je-je utiliser gcc 4.5.1, qui est au courant.
Dans mon code, il a travaillé à faire de l'constructeur de copie privée, même si le constructeur de déplacement n'ont pas l'explicite "noexcept".

OriginalL'auteur Bertwim van Beest | 2011-11-03