#include using namespace std; class dummy { public: dummy(int a) { _a=a; } int getA() const {return _a;} private: int _a; }; bool operator>( dummy a, dummy b) { return a.getA()>b.getA(); } ostream& operator<<(ostream& out, dummy a) { return (out << a.getA()) ; } template T getMax(T a, T b) { return (a>b)? a: b; } int main() { int a=10, b=12; float f=231.1, g=54432.1; cout << "Max tra int " << getMax(a,b) << endl; cout << "Max tra float " << getMax(f,g) << endl; dummy r(100); dummy t(1000); cout << "Max tra dummy " << getMax(r,t) << endl; return 0; }