考慮以下幾點:專業化的功能,用於特定的模板類型
template <typename TResult> inline TResult _from_string(const string& str);
template <> inline unsigned long long _from_string<unsigned long long>(const string& str) {
return stoull(str);
}
我可以調用的功能,例如:
auto x = _from_string<unsigned long long>("12345");
現在我想再寫專門爲vector
S,即:
template <typename T> inline vector<T> _from_string<vector<T>>(const string& str) {
// stuff that should be done only if the template parameter if a vector of something
}
以便我可以這樣做:
auto x = _from_string<vector<int>>("{1,2,3,4,5}");
然而,當我編譯功能(MSVC在2015年),我得到錯誤C2768:「非法使用顯式模板參數」,這讓我不應該在一個專門爲具有新的模板參數某種意義上。
我該如何重寫vector
專業化,以便它可以工作?
您一定要閱讀Herb Sutter的[本文](http://www.gotw.ca/publications/mill17.htm)。 – Rakete1111