声明“unsigned T”

时间:2013-04-04 08:31:25

标签: c++ templates integer unsigned

我想在模板中使用unsigned T:

template<class T>
void signed2unsigned(const T* source, unsigned T* dest, size_t n)
    {
    do
        {
        intmax_t s=*source;
        s+=min(*source);

        *dest=s;

        ++dest;
        ++source;
        --n;
        }
    while(n!=0);
    }

这不起作用,因为在考虑类型T之前,unsigned without扩展为unsigned int。除了引入U并在文档中写入U必须是无符号T?

之外是否有其他解决方法

2 个答案:

答案 0 :(得分:11)

std::make_unsigned<T>::type是你似乎在寻找的东西。

答案 1 :(得分:2)

您可以使用std::make_unsigned<T>::type