fork download
  1. #include <iostream>
  2.  
  3. class foo {
  4. public:
  5. foo() { std::cout << "ctor" << std::endl; }
  6. foo(const foo & x) { std::cout << "copy" << std::endl; }
  7. foo(foo && x) { std::cout << "move" << std::endl; }
  8. };
  9.  
  10. class move {
  11. foo a;
  12. };
  13.  
  14. class does_not_move {
  15. foo a;
  16. public:
  17. does_not_move() {}
  18. does_not_move(const does_not_move &m) : a(m.a) {}
  19. };
  20.  
  21. int main() {
  22. std::cout << "--- move ---" << std::endl;
  23. move m;
  24. move m2(std::move(m));
  25. std::cout << "--- doesn't move ---" << std::endl;
  26. does_not_move dm;
  27. does_not_move dm2(std::move(dm));
  28. return 0;
  29. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
--- move ---
ctor
move
--- doesn't move ---
ctor
copy