#include #include #include using namespace std; namespace My_region { void minus(int i) { cout << "L'opposto di " << i << " e' " << -i << '\n'; } template class Sum { T res; public: Sum() : res(T(0)) {} void operator()(T x) { res += x;} T result() const { return res; } }; template ostream& operator<<(ostream& out, const Sum& s) { out << s.result(); return out; } } int main() { using My_region::minus; using My_region::Sum; vector vi(5); vi[0] = 5; vi[1] = 0; vi[2] = -7; vi[3] = 6; vi[4] = -1; for_each(vi.begin(),vi.end(),minus); cout << "Somma = " << for_each(vi.begin(),vi.end(),Sum()) << '\n'; return 0; }