Воспользуйтесь уловкой подкачки:
#include <vector> template <typename T> void FreeAll( T & t ) { T tmp; t.swap( tmp ); } int main() { std::vector <int> v; v.push_back( 1 ); FreeAll( v ); }
Рассмотрим использование трюка с подменой:
vector(shapes).swap(shapes);