template<typename T, typename U>  
auto max(T x, U y) -> decltype(x > y ? x : y)  
{ return x > y ? x : y; }

#include <iostream>
int main() {
	char x = 15;
	unsigned long long y = 4;
	auto result = max(x, y);
	::std::cout << result << "\n";
}