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