Каков правильный способ повторного использования перемещенного контейнера?
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);
Из того, что я прочитал в стандартном черновике С++ 0x; ver3 кажется правильным, поскольку объект после перемещения находится в
"Если не указано иное, такие перемещенные объекты должны быть размещены в действительном, но неуказанном состоянии."
Я никогда не встречал ни одного экземпляра, где он "указан иначе".
Хотя я нахожу ver3 немного круговым и будет очень предпочтительным ver1, хотя vec3 может позволить некоторую дополнительную оптимизацию, но, с другой стороны, может легко привести к ошибкам.
Правильно ли мое предположение?