#include <iostream>
#include <vector>
using namespace std;
struct TS{
TS(){
cout<<"default constructor\n";
}
TS(const TS &other) {
cout<<"Copy constructor\n";
}
TS(TS &&other) noexcept{
cout<<"Move constructor\n";
}
TS& operator=(TS const& other)
{
cout<<"Copy assigment\n";
return *this;
}
TS& operator=(TS const&& other) noexcept
{
cout<<"Move assigment\n";
return *this;
}
~TS(){
cout<<"destructor\n";
}
};
int main() {
TS ts1;
TS ts2;
cout<<"-----------------------------------------\n";
std::vector<TS> vec {ts1, ts2};
//vec.push_back(ts1);
//vec = {ts1, ts2};
cout<<"-----------------------------------------\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFRTewogICAgVFMoKXsKICAgIAljb3V0PDwiZGVmYXVsdCBjb25zdHJ1Y3RvclxuIjsKICAgIH0KCiAgICBUUyhjb25zdCBUUyAmb3RoZXIpIHsKICAgICAgICBjb3V0PDwiQ29weSBjb25zdHJ1Y3RvclxuIjsKICAgIH0KCiAgICBUUyhUUyAmJm90aGVyKSBub2V4Y2VwdHsKICAgIAljb3V0PDwiTW92ZSBjb25zdHJ1Y3RvclxuIjsKICAgIH0KCiAgICBUUyYgb3BlcmF0b3I9KFRTIGNvbnN0JiBvdGhlcikKICAgIHsKICAgICAgICBjb3V0PDwiQ29weSBhc3NpZ21lbnRcbiI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFRTJiBvcGVyYXRvcj0oVFMgY29uc3QmJiBvdGhlcikgbm9leGNlcHQKICAgIHsKICAgICAgICBjb3V0PDwiTW92ZSBhc3NpZ21lbnRcbiI7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIH5UUygpewogICAgICAgIGNvdXQ8PCJkZXN0cnVjdG9yXG4iOwogICAgfQoJCn07CgppbnQgbWFpbigpIHsKCVRTIHRzMTsKCVRTIHRzMjsKCWNvdXQ8PCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKCXN0ZDo6dmVjdG9yPFRTPiB2ZWMge3RzMSwgdHMyfTsKCS8vdmVjLnB1c2hfYmFjayh0czEpOwoJLy92ZWMgPSB7dHMxLCB0czJ9OwoJY291dDw8Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoJCgkKCQoJcmV0dXJuIDA7Cn0=