#include #include #include template class Summer { public: Summer() : m_n(0) , m_sum(0) {} void operator() (const T& n) { std::cout << "operator() running: " << n << std::endl; m_n++; m_sum += n; } int count() const { return m_n; } T sum() const { return m_sum; } U mean() const { return (m_n != 0) ? m_sum / m_n : 0; } private: int m_n; T m_sum; }; using namespace std; int main() { cout << "Input data end with ctrl+D" << endl; Summer sum; for_each(istream_iterator(cin),istream_iterator(),sum); // Summer sum = for_each(istream_iterator(cin), istream_iterator(), // Summer()); cout << "count: " << sum.count() << endl << "sum: " << sum.sum() << endl << "mean: " << sum.mean() << endl; }