fork download
  1. #include<iostream>
  2. #include<sstream>
  3. struct A{
  4. int impl_;
  5. };
  6.  
  7. std::ostringstream& operator<<(std::ostringstream& oss, A const& a){
  8. oss << "A(" << a.impl_ << ")";
  9. return oss;
  10. }
  11.  
  12. std::ostringstream& operator<<(std::ostringstream&& oss, A const& a){
  13. return operator<<(std::move(oss), a);
  14. // oss << "A(" << a.impl_ << ")";
  15. // return oss;
  16. }
  17.  
  18.  
  19. int main() {
  20.  
  21. A a{2};
  22. {// C++98 way
  23. std::ostringstream oss;
  24. oss << a;
  25. std::cout << oss.str() << std::endl; // prints "A(2)", ok"
  26. }
  27. {// possible with C++11, because of the rvalue overload
  28. std::cout << (std::ostringstream() << a).str() << std::endl; //prints "A(2)", ok
  29. }
  30. }
Time limit exceeded #stdin #stdout 5s 3428KB
stdin
Standard input is empty
stdout
A(2)