我有兩個功能,如下面的C++模板比int-> unsigned轉換更好嗎?
template<typename T>
unsigned int myFunction(T myelement)
{
myelement->func();
return 2;
}
void myFunction(unsigned int myelement)
{
}
,我用下面的代碼
myFunction(2);
的Visual Studio 2012是抱怨 「INT還沒有 - > FUNC()」。爲什麼不使用unsigned int版本?
我覺得你的代碼寫的不好,不易閱讀;我不會推薦這樣的代碼,但這是一個意見和口味的問題。 –
簡短回答:是的,一個用參數完全匹配實例化的函數模板比帶有標準轉換的非模板函數要好。因此,例如C++允許'std :: pow'的「通配符」版本是一個模板(http://en.cppreference.com/w/cpp/numeric/math/pow)。如果重載1-3總是比模板匹配得更好,這是沒有意義的。 –