#include <iostream>
struct s1
{
s1() {}
s1(const s1&& other) { std::cout << "moved s1\n"; }
s1(const s1& other) { std::cout << "copied s1\n"; }
};
struct s2
{
s2() {}
s2(s2&& other) { std::cout << "moved s2\n"; }
s2(const s2& other) { std::cout << "copied s2\n"; }
};
s1 f1()
{
const s1 r;
return std::move(r);
}
s2 f2()
{
const s2 r;
return std::move(r);
}
int main()
{
std::cout << "hello\n";
s1 v1= f1();
s2 v2 = f2();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IHMxCnsKICAgIHMxKCkge30KICAgIHMxKGNvbnN0IHMxJiYgb3RoZXIpIHsgc3RkOjpjb3V0IDw8ICJtb3ZlZCBzMVxuIjsgfQogICAgczEoY29uc3QgczEmIG90aGVyKSB7IHN0ZDo6Y291dCA8PCAiY29waWVkIHMxXG4iOyB9Cn07CgpzdHJ1Y3QgczIKewoJczIoKSB7fQogICAgczIoczImJiBvdGhlcikgeyBzdGQ6OmNvdXQgPDwgIm1vdmVkIHMyXG4iOyB9CgogICAgczIoY29uc3QgczImIG90aGVyKSB7IHN0ZDo6Y291dCA8PCAiY29waWVkIHMyXG4iOyB9Cn07CgoKczEgZjEoKQp7CiAgICBjb25zdCBzMSByOwogICAgcmV0dXJuIHN0ZDo6bW92ZShyKTsKfQoKczIgZjIoKQp7CiAgICBjb25zdCBzMiByOwogICAgcmV0dXJuIHN0ZDo6bW92ZShyKTsKfQoKaW50IG1haW4oKQp7CglzdGQ6OmNvdXQgPDwgImhlbGxvXG4iOwoJczEgdjE9IGYxKCk7CglzMiB2MiA9IGYyKCk7Cn0=