#include <vector>
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
class Test {
public:
Test() { cout << "Test()\n"; }
Test(int x):val_(x){ cout << "Test(" << x << ")\n"; }
Test(const Test& t) = delete;
Test& operator = (const Test& t) = delete;
Test(Test&&t) :val_(t.val_) { t.val_ = 0; cout << "Test(const Test&& " << t.val_ << ")\n"; }
Test& operator = (Test&& t) {
cout << "Test& operator = (const Test&&" << t.val_ <<")\n";
val_ = t.val_; t.val_ = 0;
return *this;}
~Test() { cout << "~Test(" << val_ <<")\n"; }
int val() const { return val_; }
private:
int val_ = 0;
};
Test get(int n)
{
Test t(n);
return t;
}
vector<Test> get()
{
vector<Test> v;
v.push_back(Test(1));
v.push_back(Test(2));
return v;
}
int main(int argc, const char * argv[])
{
vector<Test> v = get();
v.push_back(get(5));
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBUZXN0IHsKcHVibGljOgogICAgVGVzdCgpICAgICAgICAgICAgIHsgY291dCA8PCAiVGVzdCgpXG4iOyB9CiAgICBUZXN0KGludCB4KTp2YWxfKHgpeyBjb3V0IDw8ICJUZXN0KCIgPDwgeCA8PCAiKVxuIjsgfQoKICAgIFRlc3QoY29uc3QgVGVzdCYgdCkgPSBkZWxldGU7CiAgICBUZXN0JiBvcGVyYXRvciA9IChjb25zdCBUZXN0JiB0KSA9IGRlbGV0ZTsKCgogICAgVGVzdChUZXN0JiZ0KSAgICAgIDp2YWxfKHQudmFsXykgeyB0LnZhbF8gPSAwOyBjb3V0IDw8ICJUZXN0KGNvbnN0IFRlc3QmJiAiIDw8IHQudmFsXyA8PCAiKVxuIjsgfQogICAgVGVzdCYgb3BlcmF0b3IgPSAoVGVzdCYmIHQpIHsKICAgICAgICBjb3V0IDw8ICJUZXN0JiBvcGVyYXRvciA9IChjb25zdCBUZXN0JiYiIDw8IHQudmFsXyA8PCIpXG4iOwogICAgICAgIHZhbF8gPSB0LnZhbF87IHQudmFsXyA9IDA7CiAgICAgICAgcmV0dXJuICp0aGlzO30KICAgIH5UZXN0KCkgICAgICAgICAgIHsgY291dCA8PCAiflRlc3QoIiA8PCB2YWxfIDw8IilcbiI7IH0KICAgIGludCB2YWwoKSBjb25zdCB7IHJldHVybiB2YWxfOyB9CnByaXZhdGU6CiAgICBpbnQgdmFsXyA9IDA7Cn07CgoKVGVzdCBnZXQoaW50IG4pCnsKICAgIFRlc3QgdChuKTsKICAgIHJldHVybiB0Owp9Cgp2ZWN0b3I8VGVzdD4gZ2V0KCkKewogICAgdmVjdG9yPFRlc3Q+IHY7CiAgICB2LnB1c2hfYmFjayhUZXN0KDEpKTsKICAgIHYucHVzaF9iYWNrKFRlc3QoMikpOwogICAgcmV0dXJuIHY7Cn0KCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewoKICAgIHZlY3RvcjxUZXN0PiB2ID0gZ2V0KCk7CiAgICB2LnB1c2hfYmFjayhnZXQoNSkpOwp9Cg==