arguments 模板函数中的常量
arguments a constant in template function
我有一个如下所示的模板函数,其中一个参数是常量
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
对于显式专业化,我希望有以下代码。但这会产生编译错误。
template<> char* maxAmong( char* x, const char* y) {
return x;
}
而使 return 类型和两个参数都为常量有效
template<> const char* maxAmong( const char* x, const char* y) {
return x;
}
为什么第二个片段中的代码会失败,因为对我来说代码看起来更正确。
const char *
是指向 const char
.
的指针
char * const
是指向 char
.
的常量指针
因此,您的模板专业化应如下所示 this:
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
template<>
char* maxAmong( char* x, char* const y) {
return x;
}
这个帖子也可能有帮助。
What is the difference between char * const and const char *?
我有一个如下所示的模板函数,其中一个参数是常量
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
对于显式专业化,我希望有以下代码。但这会产生编译错误。
template<> char* maxAmong( char* x, const char* y) {
return x;
}
而使 return 类型和两个参数都为常量有效
template<> const char* maxAmong( const char* x, const char* y) {
return x;
}
为什么第二个片段中的代码会失败,因为对我来说代码看起来更正确。
const char *
是指向 const char
.
char * const
是指向 char
.
因此,您的模板专业化应如下所示 this:
template<typename T>
T maxAmong( T x, const T y) {
return x ;
}
template<>
char* maxAmong( char* x, char* const y) {
return x;
}
这个帖子也可能有帮助。
What is the difference between char * const and const char *?