fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <iterator>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10. class Test {
  11. public:
  12. Test () { cout<<"Test constructed"<<endl; }
  13. Test (const Test&) { cout<<"Test copy constructed"<<endl; }
  14. Test (const Test&&) { cout<<"Test move constructed"<<endl; }
  15. Test& operator= (const Test&) { cout<<"Test copy assigned"<<endl; return *this; }
  16. Test& operator= (const Test&&) { cout<<"Test move assigned"<<endl;return *this; }
  17. ~Test() { cout<<"Test destructed"<<endl; }
  18.  
  19. };
  20.  
  21. Test f(){
  22. return Test();
  23. }
  24.  
  25. std::vector<std::string> split(const std::string& s, char delimiter)
  26. {
  27. std::vector<std::string> tokens;
  28. std::string token;
  29. std::istringstream tokenStream(s);
  30. while (std::getline(tokenStream, token, delimiter))
  31. {
  32. tokens.push_back(token);
  33. }
  34. return tokens;
  35. }
  36.  
  37. int main()
  38. {
  39. auto r = split("one, two, three", ' ');
  40. copy (r.begin(), r.end(), ostream_iterator<string>(cout," "));
  41.  
  42. auto t = f(); // 1 copy elision
  43. t = f(); //2 move assignement
  44. }
Success #stdin #stdout 0s 4424KB
stdin
Standard input is empty
stdout
one, two, three Test constructed
Test constructed
Test move assigned
Test destructed
Test destructed