我有一个类型Type
和一个变量tmp
:
template<typename Type> myFunction()
{
/* SOMETHING */ tmp = 0;
};
我想声明tmp
好像是浮点类型并且Type
好像是整数类型。如何在 C++11 中做到这一点?Type
double
Type
我有一个类型Type
和一个变量tmp
:
template<typename Type> myFunction()
{
/* SOMETHING */ tmp = 0;
};
我想声明tmp
好像是浮点类型并且Type
好像是整数类型。如何在 C++11 中做到这一点?Type
double
Type
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
先检查一下。在此处查看其他有用的类型特征:
查找并使用以下特征:
template <bool, class T, class F> struct conditional;
template <class T> struct is_integral;
template <class T> struct is_floating_point;
如果这对您不起作用,请发布您尝试过的内容以及由此产生的错误消息。