template <typename T> T max(T a, T b) { return (a > b) ? a : b; }
int max_ints(int a, int b) { return max(a, b); }
Of course this only works if "a" and "b" have the same type. 0x provides a solution for the situation where they don't:
template <typename Ta, typename Tb> auto max(Ta a, Tb b) -> decltype((a > b) ? a : b) { return (a > b) ? a : b; }
int max_int_char(int a, char b) { return max(a, b); }