我有一个Type
类型和一个变量tmp
:
template<typename Type> myFunction()
{
/* SOMETHING */ tmp = 0;
};
如果tmp
是浮点类型,我希望将Type
声明为Type
,如果double
是整数类型,我希望Type
。如何在C ++ 11中做到这一点?
答案 0 :(得分:7)
typedef typename std::conditional<
std::is_floating_point<T>::value,
T, //if floating, ::type = T
double //else, ::type = double
>::type value_type;
value_type tmp; //declare variable
我假设T
只能是算术类型。如果需要,可以先使用std::is_arithmetic
进行检查。请在此处查看其他有用的类型特征:
答案 1 :(得分:4)
查找并使用以下特征:
template <bool, class T, class F> struct conditional;
template <class T> struct is_integral;
template <class T> struct is_floating_point;
如果这样做不适合您,请发布您尝试过的内容以及生成的错误消息。