Каков правильный способ повторного использования перемещенного контейнера?
std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);
// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize
container.push_back(2);
assert(container.size() == 1 && container.front() == 2);
Из того, что я прочитал в проекте стандарта C++0x; ver3 кажется правильным, так как объект после перемещения находится в
"Если не указано иное, такие перемещенные объекты должны быть помещены в действительное, но неуказанное состояние."
Я не нашел ни одного случая, где было бы "указано иное".
Хотя я нахожу ver3 немного окольным путем и предпочел бы ver1, хотя vec3 может позволить некоторую дополнительную оптимизацию, но с другой стороны может легко привести к ошибкам.
Верно ли мое предположение?