我想寫一個模板特用於返回數值數組(普通版)或c-字符串數組中最長的C-串的最大值函數(專業化)。如果我不使用常量,我的函數原型看起來像這樣使用爲const char **與模板專門
template <typename T>
T maxn(T* my_Tptr, unsigned int n);
template <>
char* maxn <char*> (char** my_cstrings, unsigned int n);
和我的代碼編譯。
但是,如果我嘗試使用常量性,我的函數原型看起來像這樣,
template <typename T>
T maxn(const T* my_Tptr, unsigned int n);
template <>
char* maxn <char*> (const char** my_cstrings, unsigned int n);
我的代碼不能編譯,編譯器(GCC)打印此錯誤:
錯誤:'char * maxn(const char **,unsigned int)'的template-id'maxn'不匹配任何模板聲明。
我哪裏錯了?
不是我介意,但我真的想知道爲什麼你需要在源代碼中構建? – evilruff
'模板<> 字符常量* MAXN(字符常量* const的*,無符號整型);'或'模板<> 字符* MAXN (char * const的*,無符號整型);' –
dyp