0
我試圖做這樣的事情的std :: make_unsigned忙玲/鏈接錯誤
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));
}
當我嘗試使用強制明確instanciation(EXTERN模板),我從納米demangled輸出如下:
void foo<unsigned long long>(std::make_unsigned<unsigned long long>::type)
現在,爲什麼不std :: make_unsigned :: type發出相同的類型,就好像我寫了unsigned T explicity?相反,我得到未定義的參考。