fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <unordered_map>
  4. #include <iterator>
  5.  
  6.  
  7. struct S
  8. {
  9. bool init = true;
  10. static int count;
  11. S() { std::cout << "S::S() " << ++count << "\n"; }
  12. S(S const&) { std::cout << "S::S(S const&)\n"; }
  13. S(S&& s) { std::cout << "S::S(S&&)\n"; s.init = false; }
  14. ~S() { std::cout << "S::~S() (init=" << init << ")\n"; }
  15. };
  16.  
  17. int S::count;
  18.  
  19.  
  20. int main()
  21. {
  22. std::cout << "Building unordered map\n";
  23. std::unordered_map<int, S> um;
  24. for (int i = 0; i < 5; ++i)
  25. um.insert(std::make_pair(i, S()));
  26.  
  27. std::cout << "Building ordered map\n";
  28. std::map<int, S> m(
  29. std::make_move_iterator(um.begin()),
  30. std::make_move_iterator(um.end()));
  31. }
  32.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Building unordered map
S::S() 1
S::S(S&&)
S::S(S&&)
S::~S() (init=0)
S::~S() (init=0)
S::S() 2
S::S(S&&)
S::S(S&&)
S::~S() (init=0)
S::~S() (init=0)
S::S() 3
S::S(S&&)
S::S(S&&)
S::~S() (init=0)
S::~S() (init=0)
S::S() 4
S::S(S&&)
S::S(S&&)
S::~S() (init=0)
S::~S() (init=0)
S::S() 5
S::S(S&&)
S::S(S&&)
S::~S() (init=0)
S::~S() (init=0)
Building ordered map
S::S(S&&)
S::S(S&&)
S::S(S&&)
S::S(S&&)
S::S(S&&)
S::~S() (init=1)
S::~S() (init=1)
S::~S() (init=1)
S::~S() (init=1)
S::~S() (init=1)
S::~S() (init=0)
S::~S() (init=0)
S::~S() (init=0)
S::~S() (init=0)
S::~S() (init=0)