fork download
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. const char hw[] = "hello world!\n";
  5.  
  6. class mystring
  7. {
  8. public:
  9. mystring() {std::cout<<"mystring()\n";}
  10. mystring(mystring const&) {std::cout<<"mystring(mystring const&)\n";}
  11. mystring(mystring &&) {std::cout<<"mystring(mystring &&)\n";}
  12. ~mystring() {std::cout<<"~mystring()\n";}
  13. const char* begin() const {return hw;}
  14. const char* end() const {return hw+std::strlen(hw);}
  15. };
  16.  
  17. mystring&& silly_idea(mystring&& x)
  18. { return std::move(x); }
  19.  
  20. int main()
  21. {
  22. std::cout << "PRvalue:\n";
  23. for(char c : mystring()) {
  24. std::cout << c;
  25. }
  26. std::cout << "Xvalue:\n";
  27. for(char c : silly_idea(mystring())) {
  28. std::cout << c;
  29. }
  30. }
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
PRvalue:
mystring()
hello world!
~mystring()
Xvalue:
mystring()
~mystring()
hello world!