【发布时间】:2013-02-17 21:49:50
【问题描述】:
我有一个类模板,我用它来获取变量的大小:
template <class T>
class Size
{
unsigned int operator() (T) {return sizeof(T);}
};
这很好用,但对于字符串我想使用 strlen 而不是 sizeof:
template <>
class Size<char *>
{
unsigned int operator() (char *str) {return strlen(str);}
};
问题是当我使用 const char * 创建一个 size 实例时,它会转到非专业版本。我想知道是否有办法在模板专业化中同时捕获 char * 的 const 和非 const 版本?谢谢。
【问题讨论】:
-
我不相信这是个好主意。如果
(const) char *不指向字符串,情况会怎样? -
只专门化
const版本是否有效? -
不,那么当你传递一个非 const char * 时,它不使用专业化。