我有一個模板函式,如下所示,其中一個引數是常量
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
對于顯式專業化,我希望有以下代碼。但這會導致編譯錯誤。
template<> char* maxAmong( char* x, const char* y) {
return x;
}
而使兩個回傳型別和兩個引數 const 都有效
template<> const char* maxAmong( const char* x, const char* y) {
return x;
}
為什么第二個代碼段中的代碼失敗,對我來說代碼看起來更正確。
uj5u.com熱心網友回復:
const char *是一個指向 a 的指標const char。
char * const是指向 a 的常量指標char。
因此,您的模板專業化應如下所示:
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
template<>
char* maxAmong( char* x, char* const y) {
return x;
}
這個執行緒也可能有幫助。
char * const 和 const char * 有什么區別?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326464.html
上一篇:如何將我的模板從胡子轉換為車把?
下一篇:模板函式的雙模板引數
