Объявите «без знака Т»;

Я хочу использовать 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);
}

Это не работает, поскольку unsigned без расширяется до unsigned int до того, как тип T будет принят во внимание. Есть ли обходной путь, отличный от введения U и записи в документации, что U должен быть беззнаковым T?

8

Решение

ты можешь использовать std::make_unsigned<T>::type

2

Другие решения

std::make_unsigned<T>::type это то, что вы, похоже, ищете.

11

По вопросам рекламы [email protected]