Первое решение:
std::vector<int> *vec = new std::vector<int>;
assert(vec != NULL);
// ...
delete vec;
std::vector<int> v;
//...
vec.clear();
vec.swap(std::vector<int>(vec));
Второе решение - это трюк - какой "правильный" способ сделать это?
Обновление:
Я знаю, что деструктор будет вызван после его завершения, мне было интересно узнать о других методах.