Compare diff type values
闲来无聊,迷上了meta programming 小例子:
#include <iostream> using namespace std; template<typename T1, typename T2> struct IsBigger { static const bool bigger = sizeof(T1) > sizeof(T2); }; template<typename T1, typename T2, bool bigger> struct ReturnType { }; template<typename T1, typename T2> struct ReturnType<T1, T2, true> { typedef typename T1 valType; }; template<typename T1, typename T2> struct ReturnType<T1, T2, false> { typedef typename T2 valType; }; template<typename T1, typename T2> typename ReturnType<typename T1, typename T2, IsBigger<T1, T2>::bigger>::valType Max(const T1& t1, const T2& t2) { typedef typename ReturnType<T1, T2, IsBigger<T1, T2>::bigger>::valType value; value tmp1 = (value)(t1); value tmp2 = (value)(t2); return t1 > t2 ? t1 : t2; }