This compiles:
int* p1;
const int* p2;
p2 = p1;
This does not:
vector v1;
vector v2;
v2 = v1;
In C++ templated classes, each instantiation of the template is a completely different class - there is as much difference between vector and vector as there is between vector and vector or any other two classes for that matter.
It is possible that the committee could have added a conversion operator on vector to vector as Earwicker suggests - and you can go ahead and provide your own implementation of such a function:
template
vector convert_vector(const vector &other)
{
vector newVector;
newVector.assign(other.begin(), other.end());
return newVector;
}
and use it like so:
vector v1;
vector v2;
v2 = convert_vector(v1);
Unfortunately, until C++0x comes with it's move constructors, this will be pretty bad performance-wise.