fork(1) download
  1. #include <list>
  2. #include <iostream>
  3. #include <sstream>
  4. class summator{
  5. std::list<int> vars;
  6. public:
  7. summator& operator << (int o)
  8. {
  9. vars.push_back(o);
  10. return *this;
  11. }
  12. summator& operator << (const char *o)
  13. {
  14. vars.push_back(atoi(o));
  15. return *this;
  16. }
  17. summator& calc_internal()
  18. {
  19. int sum = 0;
  20. while(!vars.empty()){
  21. sum += vars.front();
  22. vars.pop_front();
  23. }
  24. std::cout << "sum = " << sum;
  25. return *this;
  26. }
  27.  
  28. summator& operator << ( summator & (f)( summator & ) ) {
  29. return f( *this );
  30. }
  31. };
  32.  
  33. summator & calc( summator & o )
  34. {
  35. return o.calc_internal();
  36. }
  37.  
  38.  
  39. int main(int argc, char* argv[])
  40. {
  41. summator sum;
  42. sum << 1 << 2 << "3" << calc;
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
sum = 6