#include <iostream>
#include <string>
using namespace std;
struct test{
test(){ cout << "ctor" << endl;}
test(const test&) { cout << "copy" << endl; }
test(test&&) { cout << "move" << endl; }
~test(){ cout << "dtor" << endl;}
test& operator=(const test&) { cout << "assignment" << endl; return *this; }
test& operator=(test&&) {cout << "move assignment" << endl; return *this; }
};
int main() {
cout << "Construction" << endl;
basic_string<test> foo;
cout << "resize(3)" << endl;
foo.resize(3);
cout << "resize(1)" << endl;
foo.resize(1);
cout << "Destruction" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHRlc3R7Cgl0ZXN0KCl7IGNvdXQgPDwgImN0b3IiIDw8IGVuZGw7fQoJdGVzdChjb25zdCB0ZXN0JikgeyBjb3V0IDw8ICJjb3B5IiA8PCBlbmRsOyB9Cgl0ZXN0KHRlc3QmJikgeyBjb3V0IDw8ICJtb3ZlIiA8PCBlbmRsOyB9Cgl+dGVzdCgpeyBjb3V0IDw8ICJkdG9yIiA8PCBlbmRsO30KCQoJdGVzdCYgb3BlcmF0b3I9KGNvbnN0IHRlc3QmKSB7IGNvdXQgPDwgImFzc2lnbm1lbnQiIDw8IGVuZGw7IHJldHVybiAqdGhpczsgfQoJdGVzdCYgb3BlcmF0b3I9KHRlc3QmJikge2NvdXQgPDwgIm1vdmUgYXNzaWdubWVudCIgPDwgZW5kbDsgcmV0dXJuICp0aGlzOyB9Cn07CgppbnQgbWFpbigpIHsKCWNvdXQgPDwgIkNvbnN0cnVjdGlvbiIgPDwgZW5kbDsKCQoJYmFzaWNfc3RyaW5nPHRlc3Q+IGZvbzsKCQoJY291dCA8PCAicmVzaXplKDMpIiA8PCBlbmRsOwoJZm9vLnJlc2l6ZSgzKTsKCWNvdXQgPDwgInJlc2l6ZSgxKSIgPDwgZW5kbDsKCWZvby5yZXNpemUoMSk7Cgljb3V0IDw8ICJEZXN0cnVjdGlvbiIgPDwgZW5kbDsKCXJldHVybiAwOwp9