#include <iostream>
struct Foo {
Foo() = default;
Foo(const Foo &) {}
Foo(Foo &&) = default;
};
struct Bar {
Bar() = default;
Bar(const Bar &) = default;
Bar(Bar &&) {}
};
Foo GetFoo() {
Foo foo;
std::cout << "GetFoo:" << &foo << std::endl;
return foo;
}
Bar GetBar() {
Bar bar;
std::cout << "GetBar:" << &bar << std::endl;
return bar;
}
int main() {
Foo foo = GetFoo();
std::cout << "foo:" << &foo << std::endl;
Bar bar = GetBar();
std::cout << "bar:" << &bar << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgRm9vIHsKCUZvbygpID0gZGVmYXVsdDsKCUZvbyhjb25zdCBGb28gJikge30KCUZvbyhGb28gJiYpID0gZGVmYXVsdDsKfTsKCnN0cnVjdCBCYXIgewoJQmFyKCkgPSBkZWZhdWx0OwoJQmFyKGNvbnN0IEJhciAmKSA9IGRlZmF1bHQ7CglCYXIoQmFyICYmKSB7fQp9OwoKRm9vIEdldEZvbygpIHsKCUZvbyBmb287CglzdGQ6OmNvdXQgPDwgIkdldEZvbzoiIDw8ICZmb28gPDwgc3RkOjplbmRsOwoJcmV0dXJuIGZvbzsKfQoKQmFyIEdldEJhcigpIHsKCUJhciBiYXI7CglzdGQ6OmNvdXQgPDwgIkdldEJhcjoiIDw8ICZiYXIgPDwgc3RkOjplbmRsOwoJcmV0dXJuIGJhcjsKfQoKaW50IG1haW4oKSB7CglGb28gZm9vID0gR2V0Rm9vKCk7CglzdGQ6OmNvdXQgPDwgImZvbzoiIDw8ICZmb28gPDwgc3RkOjplbmRsOwoJQmFyIGJhciA9IEdldEJhcigpOwoJc3RkOjpjb3V0IDw8ICJiYXI6IiA8PCAmYmFyIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9Cg==