#include <iostream>
class A
{
public:
A(std::string str)
: m_data(str)
{
std::cout << "Ctor" << std::endl;
}
A(const A& rhs)
: m_data(rhs.m_data)
{
std::cout << "Copy ctor" << std::endl;
}
A(A&& rhs) noexcept
: m_data(std::move(rhs.m_data))
{
std::cout << "Move ctor" << std::endl;
}
void print()
{
std::cout << m_data << std::endl;
}
private:
std::string m_data;
};
int main()
{
A one("one");
A two(one);
A three = std::move(one);
one.print();
two.print();
three.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIEEoc3RkOjpzdHJpbmcgc3RyKSAKICAgICAgICA6IG1fZGF0YShzdHIpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJDdG9yIiA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgQShjb25zdCBBJiByaHMpCiAgICA6IG1fZGF0YShyaHMubV9kYXRhKSAKICAgIHsgCiAgICAgICAgc3RkOjpjb3V0IDw8ICJDb3B5IGN0b3IiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIAogICAgQShBJiYgcmhzKSBub2V4Y2VwdAogICAgOiBtX2RhdGEoc3RkOjptb3ZlKHJocy5tX2RhdGEpKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiTW92ZSBjdG9yIiA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgdm9pZCBwcmludCgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8IG1fZGF0YSA8PCBzdGQ6OmVuZGw7CiAgICB9Cgpwcml2YXRlOgogICAgc3RkOjpzdHJpbmcgbV9kYXRhOwp9OwoKCmludCBtYWluKCkKewogICAgQSBvbmUoIm9uZSIpOwogICAgQSB0d28ob25lKTsKCiAgICBBIHRocmVlICA9IHN0ZDo6bW92ZShvbmUpOwogICAgCiAgICBvbmUucHJpbnQoKTsKICAgIHR3by5wcmludCgpOwogICAgdGhyZWUucHJpbnQoKTsKCiAgICByZXR1cm4gMDsKfQo=