fork download
  1. #include <iostream>
  2. #include <memory>
  3. using namespace std;
  4.  
  5. class foo {
  6. public:
  7. foo():a(new int()) { std::cout << "ctor" << std::endl; }
  8. foo(const foo & x) : a(x.a) { std::cout << "copy" << std::endl; }
  9. foo(foo && x) /*: a(std::move(x.a)) */{ std::cout << "move" << std::endl; }
  10. std::shared_ptr<int> a;
  11. };
  12.  
  13. int main() {
  14. foo a;
  15. foo b;
  16. std::cout << "a is not null " << !!a.a << std::endl;
  17. auto f = [a = std::move(a), b = std::move(b)] () {cout<<"a.a is not null " <<!!a.a<<endl; };
  18. f();
  19. std::cout << "a is not null " << !!a.a << std::endl;
  20. auto f2(std::move(f));
  21. f();
  22. std::cout << "a is not null " << !!a.a << std::endl;
  23. return 0;
  24. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
ctor
ctor
a is not null 1
move
move
a.a is not null 0
a is not null 1
move
move
a.a is not null 0
a is not null 1