64,691
社区成员
发帖
与我相关
我的任务
分享
template <bool condition, typename True, typename False>
struct IfThenElse;
template <typename True, typename False>
struct IfThenElse<true, True, False>
{
typedef True type;
};
template <typename True, typename False>
struct IfThenElse<false, True, False>
{
typedef False type;
};
template <int n>
struct ReturnType
{
typedef
typename IfThenElse< n % 10 < 3, char,
typename IfThenElse< n % 10 < 6, short,
typename IfThenElse< n % 10 < 9, int,
long>::type
>::type
>::type type;
};
template <int n>
typename ReturnType<n>::type fun()
{
return 0;
}
//各位大侠看下这样可以吗?
template <class T>
struct traits{};
template <>
struct traits<int>
{
typedef int value_type;
};
template <>
struct traits<char>
{
typedef char value_type;
};
template <class I>
typename I::value_type fun(int _x)
{
//根据_x值判断一下
//返回int return int()
//返回char return char()
}
if else
template <int I>
struct fn;
template <>
struct fn<1>
{
int operator()()
{
std::cout << "int" << std::endl;
return 1;
}
};
template <>
struct fn<2>
{
double operator()()
{
std::cout << "double" << std::endl;
return 2.0;
}
};
int main()
{
std::cout << fn<2>()();
}