我正在嘗試爲特定類型的所有模板化值專門化模板函數。我有以下功能:特定模板類型的功能模板專業化
template <class T>
std::string toString(const T& t);
下面將讓我專注的功能花車的Vector2:
template <>
std::string toString<Vector2<float>>(const Vector2<float>& v);
,但我想將專門用於所有類型的Vector2的功能。我已經試過這樣的事情:
template <class T>
std::string toString(const Vector2<T>& v);
但調用toString()函數時,像這樣:
Vector2<float> vec;
toString(vec);
的第一個函數被調用。我怎樣才能做到這一點?
編輯:
我可能已經離開了一個重要的細節,我其實是調用像這樣的功能:
toString<Vector2<float>>(vec)
我不認爲這有差別,但顯然它確實如此,因爲當我打電話給它時,它沒有任何問題。爲什麼這會導致不需要的功能被調用?對不起,浪費你的時間,並感謝你的幫助。
[無法重現](http://coliru.stacked-crooked.com/a/7368da00a62395b2)。注意:你重載'toString',而不是專門化 - 這是正確的方法。這應該工作。 – Quentin
@Quentin我懷疑他想部分專門化一個功能。正如你所知道的那樣,這是不可能的,並且因爲實際的超載而出現意外的行爲。需要澄清。 – skypjack
發現問題,更新問題... –