#include <iostream>
#include <vector>
template<typename T, typename Allocator = std::allocator<T>>
class Vector: public std::vector<T, Allocator>
{
using basic = std::vector<T, Allocator>;
public:
using basic::basic;
using basic::operator =;
template <typename U, typename OtherAllocator = std::allocator<U>>
Vector & operator =(const Vector<U, OtherAllocator>& other) {
this->assign(other.begin(), other.end());
return *this;
}
};
int main()
{
Vector<int> vi{1,2,3,4,5};
Vector<double> vd;
vd = vi;
for (double d : vd)
std::cout << d << " ";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4+CmNsYXNzIFZlY3RvcjogcHVibGljIHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj4KewogICB1c2luZyBiYXNpYyA9IHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj47CnB1YmxpYzoKICAgdXNpbmcgYmFzaWM6OmJhc2ljOwogICB1c2luZyBiYXNpYzo6b3BlcmF0b3IgPTsKCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBPdGhlckFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFU+PgogICBWZWN0b3IgJiBvcGVyYXRvciA9KGNvbnN0IFZlY3RvcjxVLCBPdGhlckFsbG9jYXRvcj4mIG90aGVyKSB7CiAgICAgIHRoaXMtPmFzc2lnbihvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQp9OwoKaW50IG1haW4oKQp7CiAgIFZlY3RvcjxpbnQ+IHZpezEsMiwzLDQsNX07CiAgIFZlY3Rvcjxkb3VibGU+IHZkOwogICB2ZCA9IHZpOwogICBmb3IgKGRvdWJsZSBkIDogdmQpCiAgICAgIHN0ZDo6Y291dCA8PCBkIDw8ICIgIjsKfQ==