Я хочу использовать 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?
ты можешь использовать std::make_unsigned<T>::type
std::make_unsigned<T>::type
это то, что вы, похоже, ищете.