template<class T, class porovnani = less<T> >
class Max
{
    porovnani c;
public:
    T operator ()(T a, T b)
    {
        return c(a, b) ? b : a;
    }
};


Max<int> mi;
int c = mi(a, b); // Vrátí větší z čísel a a b


int c = Max<int>()(a, b);