Quelle est la bonne façon de réutiliser un conteneur déplacé?
std::vector container;
container.push_back(1);
auto container2 = std::move(container);
// ver1: Ne rien faire
//container2.clear(); // ver2: "Réinitialiser"
container = std::vector() // ver3: Réinitialiser
container.push_back(2);
assert(container.size() == 1 && container.front() == 2);
D'après ce que j'ai lu dans le brouillon de la norme C++0x ; ver3 semble être la bonne façon, car un objet après un déplacement se trouve dans un
« Sauf indication contraire, de tels objets déplacés doivent être placés dans un état valide mais non spécifié. »
Je n'ai jamais trouvé de cas où il est "autrement spécifié".
Bien que je trouve ver3 un peu indirect et aurait largement préféré ver1, bien que vec3 puisse permettre certaines optimisations supplémentaires, mais d'un autre côté peut facilement conduire à des erreurs.
Ma supposition est-elle correcte?