fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. class Test {
  7. public:
  8. Test() { cout << "Test()\n"; }
  9. Test(int x):val_(x){ cout << "Test(" << x << ")\n"; }
  10. Test(const Test& t):val_(t.val_) { cout << "Test(const Test& " << t.val_ << ")\n"; }
  11. Test(Test&&t) :val_(t.val_) { t.val_ = 0; cout << "Test(const Test&& " << t.val_ << ")\n"; }
  12. Test& operator = (const Test& t) {
  13. cout << "Test& operator = (const Test& " << t.val_ <<")\n";
  14. val_ = t.val_;
  15. return *this;}
  16. Test& operator = (Test&& t) {
  17. cout << "Test& operator = (const Test&&" << t.val_ <<")\n";
  18. val_ = t.val_; t.val_ = 0;
  19. return *this;}
  20. ~Test() { cout << "~Test(" << val_ <<")\n"; }
  21. int val() const { return val_; }
  22. private:
  23. int val_ = 0;
  24. };
  25.  
  26.  
  27. int main(int argc, char * argv[])
  28. {
  29. vector<Test> t;
  30. t.reserve(20);
  31.  
  32. for(int i = 0; i < 20; ++i)
  33. {
  34. t.emplace_back(i);
  35. }
  36. }
  37.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Test(0)
Test(1)
Test(2)
Test(3)
Test(4)
Test(5)
Test(6)
Test(7)
Test(8)
Test(9)
Test(10)
Test(11)
Test(12)
Test(13)
Test(14)
Test(15)
Test(16)
Test(17)
Test(18)
Test(19)
~Test(0)
~Test(1)
~Test(2)
~Test(3)
~Test(4)
~Test(5)
~Test(6)
~Test(7)
~Test(8)
~Test(9)
~Test(10)
~Test(11)
~Test(12)
~Test(13)
~Test(14)
~Test(15)
~Test(16)
~Test(17)
~Test(18)
~Test(19)