fork(3) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. struct bar
  5. {
  6. bar(const std::string& str) : _str(str) {}
  7.  
  8. bar(const bar&) = delete;
  9.  
  10. bar(bar&& other) : _str(std::move(other._str)) {other._str = "Stolen";}
  11.  
  12. void print() {std::cout << _str << std::endl;}
  13.  
  14. std::string _str;
  15. };
  16.  
  17. struct foo
  18. {
  19. foo(bar& b) : _b(b) {}
  20.  
  21. ~foo() {_b.print();}
  22.  
  23. bar& _b;
  24. };
  25.  
  26. bar foobar()
  27. {
  28. bar b("Hello, World!");
  29. foo f(b);
  30.  
  31. return std::move(b);
  32. }
  33.  
  34. int main()
  35. {
  36. foobar();
  37.  
  38. return EXIT_SUCCESS;
  39. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
Stolen