#include <iostream>
struct A {
const char* name;
A( const char* name_ ):name(name_) { std::cout << "created " << name << "\n"; }
A(A const&){ std::cout << "copied " << name << "\n"; }
A(A &&){ std::cout << "moved " << name << "\n"; }
};
A f() {
std::cout << "start of f()\n";
A const r("bob");
std::cout << "body of f()\n";
return r;
}
int main() {
A x = f();
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KIAogICAgc3RydWN0IEEgewogICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgICBBKCBjb25zdCBjaGFyKiBuYW1lXyApOm5hbWUobmFtZV8pIHsgc3RkOjpjb3V0IDw8ICJjcmVhdGVkICIgPDwgbmFtZSA8PCAiXG4iOyB9CiAgICAgIEEoQSBjb25zdCYpeyBzdGQ6OmNvdXQgPDwgImNvcGllZCAiIDw8IG5hbWUgPDwgIlxuIjsgfQogICAgICBBKEEgJiYpeyBzdGQ6OmNvdXQgPDwgIm1vdmVkICIgPDwgbmFtZSA8PCAiXG4iOyB9CiAgICB9OwogCiAgICBBIGYoKSB7CiAgICAgIHN0ZDo6Y291dCA8PCAic3RhcnQgb2YgZigpXG4iOwogICAgICBBIGNvbnN0IHIoImJvYiIpOwogICAgICBzdGQ6OmNvdXQgPDwgImJvZHkgb2YgZigpXG4iOwogICAgICByZXR1cm4gcjsKICAgIH0KIAogICAgaW50IG1haW4oKSB7CiAgICAgIEEgeCA9IGYoKTsKICAgIH0K