您的位置:首页 > 产品设计 > UI/UE

Compare diff type values

2014-04-01 21:16 405 查看
闲来无聊,迷上了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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: