fork(2) download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. class Test {
  9. public:
  10. Test() { cout << "Test()\n"; }
  11. Test(int x):val_(x){ cout << "Test(" << x << ")\n"; }
  12.  
  13. Test(const Test& t) = delete;
  14. Test& operator = (const Test& t) = delete;
  15.  
  16.  
  17. Test(Test&&t) :val_(t.val_) { t.val_ = 0; cout << "Test(const Test&& " << t.val_ << ")\n"; }
  18. Test& operator = (Test&& t) {
  19. cout << "Test& operator = (const Test&&" << t.val_ <<")\n";
  20. val_ = t.val_; t.val_ = 0;
  21. return *this;}
  22. ~Test() { cout << "~Test(" << val_ <<")\n"; }
  23. int val() const { return val_; }
  24. private:
  25. int val_ = 0;
  26. };
  27.  
  28.  
  29. Test get(int n)
  30. {
  31. Test t(n);
  32. return t;
  33. }
  34.  
  35. vector<Test> get()
  36. {
  37. vector<Test> v;
  38. v.push_back(Test(1));
  39. v.push_back(Test(2));
  40. return v;
  41. }
  42.  
  43.  
  44. int main(int argc, const char * argv[])
  45. {
  46.  
  47. vector<Test> v = get();
  48. v.push_back(get(5));
  49. }
  50.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Test(1)
Test(const Test&& 0)
~Test(0)
Test(2)
Test(const Test&& 0)
Test(const Test&& 0)
~Test(0)
~Test(0)
Test(5)
Test(const Test&& 0)
Test(const Test&& 0)
Test(const Test&& 0)
~Test(0)
~Test(0)
~Test(0)
~Test(1)
~Test(2)
~Test(5)