2

我有一个类型Type和一个变量tmp

template<typename Type> myFunction()
{
    /* SOMETHING */ tmp = 0;
};

我想声明tmp好像是浮点类型并且Type好像是整数类型。如何在 C++11 中做到这一点?TypedoubleType

4

2 回答 2

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先检查一下。在此处查看其他有用的类型特征:

于 2012-08-20T20:21:03.760 回答
4

查找并使用以下特征:

template <bool, class T, class F> struct conditional;
template <class T> struct is_integral;
template <class T> struct is_floating_point;

如果这对您不起作用,请发布您尝试过的内容以及由此产生的错误消息。

于 2012-08-20T20:20:48.650 回答