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;
}
浙公网安备 33010602011771号