C ++如何识别无符号类型?

时间:2014-11-19 08:31:14

标签: c++ templates

假设我想为每种类型写一个绝对值函数。 类似的东西:

template <class T>
T MyAbsVersion(T num)
{
    return (num > 0) ? num : num*-1;
}

但是,我想拒绝无符号类型的数字。 有什么好办法吗?

由于

1 个答案:

答案 0 :(得分:7)

使用std::is_signed接受仅signed类型的数字

template<class T ,
          typename std::enable_if< std::is_signed<T>::value  >::type* = nullptr >
T myabs(T num) 
{
    return (num > 0) ? num : num*-1;
}

演示Here