#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class A
{
public:
int* p;
A() : p() {}
A(int _) : p(new int(_)) {}
A(const A& a) {
p = new int(*a.p);
}
A& operator=(const A& a) {
cout << "===\n";
delete p;
p = new int(*a.p);
return *this;
}
virtual ~A() {
delete p;
}
};
void dump(const A& a)
{
std::cout << *a.p << std::endl;
}
int main()
{
std::vector<A> v;
v.push_back(A(1));
v.push_back(A(2));
v.push_back(A(3));
v.erase(v.begin());
std::for_each(v.begin(), v.end(), dump);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEKewpwdWJsaWM6CiAgICBpbnQqIHA7CgogICAgQSgpIDogcCgpIHt9CgogICAgQShpbnQgXykgOiBwKG5ldyBpbnQoXykpIHt9CgogICAgQShjb25zdCBBJiBhKSB7CiAgICAgICAgcCA9IG5ldyBpbnQoKmEucCk7CiAgICB9CiAgICAKICAgIEEmIG9wZXJhdG9yPShjb25zdCBBJiBhKSB7CiAgICAgICAgY291dCA8PCAiPT09XG4iOwogICAgICAgIGRlbGV0ZSBwOwogICAgICAgIHAgPSBuZXcgaW50KCphLnApOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KICAgIAoKICAgIHZpcnR1YWwgfkEoKSB7CiAgICAgICAgZGVsZXRlIHA7CiAgICB9Cn07Cgp2b2lkIGR1bXAoY29uc3QgQSYgYSkKewogICAgc3RkOjpjb3V0IDw8ICphLnAgPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPEE+IHY7CiAgICB2LnB1c2hfYmFjayhBKDEpKTsKICAgIHYucHVzaF9iYWNrKEEoMikpOwogICAgdi5wdXNoX2JhY2soQSgzKSk7CiAgICAKICAgIHYuZXJhc2Uodi5iZWdpbigpKTsKCiAgICBzdGQ6OmZvcl9lYWNoKHYuYmVnaW4oKSwgdi5lbmQoKSwgZHVtcCk7CgogICAgCn0K