#include <iostream>
#include <memory>
using namespace std;
class foo {
public:
foo():a(new int()) { std::cout << "ctor" << std::endl; }
// foo(const foo & x) { std::cout << "copy" << std::endl; }
//foo(foo && x) { std::cout << "move" << std::endl; }
std::shared_ptr<int> a;
};
int main() {
foo a;
foo b;
auto f = [a=move(a), b=move(b)] () {cout<<!a.a<<endl; };
f();
auto f2(std::move(f));
f();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgZm9vIHsKcHVibGljOgogICAgZm9vKCk6YShuZXcgaW50KCkpIHsgc3RkOjpjb3V0IDw8ICJjdG9yIiA8PCBzdGQ6OmVuZGw7IH0KICAgLy8gZm9vKGNvbnN0IGZvbyAmIHgpIHsgc3RkOjpjb3V0IDw8ICJjb3B5IiA8PCBzdGQ6OmVuZGw7IH0KICAgIC8vZm9vKGZvbyAmJiB4KSB7IHN0ZDo6Y291dCA8PCAibW92ZSIgPDwgc3RkOjplbmRsOyB9CiAgICBzdGQ6OnNoYXJlZF9wdHI8aW50PiBhOwp9OwoKaW50IG1haW4oKSB7CiAgICBmb28gYTsKICAgIGZvbyBiOwogICAgYXV0byBmID0gW2E9bW92ZShhKSwgYj1tb3ZlKGIpXSAoKSB7Y291dDw8IWEuYTw8ZW5kbDsgfTsKICAgIGYoKTsKICAgIGF1dG8gZjIoc3RkOjptb3ZlKGYpKTsKICAgIGYoKTsKICAgIHJldHVybiAwOwp9