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