我正在尝试做这样的事情
template<class T>
void foo(typename std::make_unsigned<T>::type x)
{
//do a lot with x (do not want to repeat for signed vs unsigned)
}
template<class T>
void foo(T x)
{
if(x < 0)
{x=-x;}
foo<typename std::make_unsigned<T>::type>
(static_cast<typename std::make_unsigned<T>::type >(x));
}
当我尝试使用强制显式实例化(外部模板)时,我从 nm 获得以下解组输出:
void foo<unsigned long long>(std::make_unsigned<unsigned long long>::type)
现在,为什么 std::make_unsigned::type 不发出与我明确写出 unsigned T 相同的类型?相反,我得到未定义的引用。