#include <iostream>
#include <utility>
using namespace std;
class A
{
int data;
public:
A(): data{0}
{
}
A(const A& other)
{
print(other);
}
A(A&& other)
{
print(other);
}
void print(const A& other) const
{
cout << "In print 1" << endl;
}
void print(const A&& other) const
{
cout << "In print 2" << endl;
}
};
int main() {
A a0;
A a1(a0);
A a2(std::move(a1));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEKewoJaW50IGRhdGE7CnB1YmxpYzoKICAgQSgpOiBkYXRhezB9CiAgIHsKICAgCQogICB9CiAgIAogICBBKGNvbnN0IEEmIG90aGVyKQogICB7CiAgIAkgICBwcmludChvdGhlcik7CiAgIH0KICAgCgogICBBKEEmJiBvdGhlcikKICAgewogICAJICAgcHJpbnQob3RoZXIpOwogICB9CgogICB2b2lkIHByaW50KGNvbnN0IEEmIG90aGVyKSBjb25zdAogICB7CiAgIAkgIGNvdXQgPDwgIkluIHByaW50IDEiIDw8IGVuZGw7CiAgIH0KICAgCiAgIHZvaWQgcHJpbnQoY29uc3QgQSYmIG90aGVyKSBjb25zdAogICB7CiAgIAkgIGNvdXQgPDwgIkluIHByaW50IDIiIDw8IGVuZGw7CiAgIH0KCQp9OwoKCmludCBtYWluKCkgewoJQSBhMDsKCUEgYTEoYTApOwoJQSBhMihzdGQ6Om1vdmUoYTEpKTsKCQoJcmV0dXJuIDA7Cn0=