fork download
  1. #include <iostream>
  2.  
  3.  
  4. struct test_t{
  5. int value;
  6.  
  7. test_t(){
  8. std::cerr << __PRETTY_FUNCTION__ << '\n';
  9. }
  10.  
  11.  
  12. test_t(int&& val) : value{std::move(val)}{
  13. std::cerr << __PRETTY_FUNCTION__ << '\n';
  14. }
  15.  
  16.  
  17. test_t(const test_t& rhs) : value{rhs.value}{
  18. std::cerr << __PRETTY_FUNCTION__ << '\n';
  19. }
  20.  
  21.  
  22. test_t& operator= (const test_t& rhs){
  23. std::cerr << __PRETTY_FUNCTION__ << '\n';
  24. value = rhs.value;
  25. return *this;
  26. }
  27.  
  28.  
  29. test_t(test_t&& rhs) : value{std::move(rhs.value)}{
  30. std::cerr << __PRETTY_FUNCTION__ << '\n';
  31. }
  32.  
  33.  
  34. test_t& operator= (test_t&& rhs){
  35. std::cerr << __PRETTY_FUNCTION__ << '\n';
  36. value = std::move(rhs.value);
  37. return *this;
  38. }
  39.  
  40. ~test_t(){
  41. std::cerr << __PRETTY_FUNCTION__ << '\n';
  42. }
  43. };
  44.  
  45.  
  46. #include <vector>
  47.  
  48. int main(){
  49. std::vector<test_t> container;
  50.  
  51. for(int n=0; n!=3; ++n) {
  52. std::cout << n << '\n';
  53. container.emplace_back();
  54. }
  55. }
  56.  
Success #stdin #stdout #stderr 0s 15240KB
stdin
Standard input is empty
stdout
0
1
2
stderr
test_t::test_t()
test_t::test_t()
test_t::test_t(const test_t&)
test_t::~test_t()
test_t::test_t()
test_t::test_t(const test_t&)
test_t::test_t(const test_t&)
test_t::~test_t()
test_t::~test_t()
test_t::~test_t()
test_t::~test_t()
test_t::~test_t()