关于模板显式特化的有关问题

关于模板显式特化的问题
做一个函数模板,输出一个数组中,某个值出现的次数,
//   template.h

template   <class   T>
int   count(T   *arr,   int   size,   T   value)
{
int   n   =   0;
for   (int   i   =   0;   i   <   size;   ++i)
{
if   (arr[i]   ==   value)
n++;
}

return   n;
}

typedef   const   char   *   STR;
template <>   int   count <STR> (STR   str_arr[],   int   size,   STR   str)     //   <1>
{
int   n   =   0;
for   (int   i   =   0;   i   <   size;   ++i)
{
if   (   strcmp(str_arr[i],   str)   ==   0)
n++;
}

return   n;
}

//   use.cpp


char   *sarr[5]   =  
{
"aaa ",
"bbb ",
"aaa ",
"ccc ",
"ddd "
};
int   n;

n   =   count(sarr,   5,   "ccc ");                                               //   <2>
cout   < <   "int   sarr,   \ "ccc\ "   appears   "   < <   n   < <   "   times   "   < <   endl;
------------------------------
出错信息是:  
<2>     error   C2782:   'int   count(T   *,int,T) '   :   template   parameter   'T '   is   ambiguous
<1>   see   declaration   of   'count '   could   be   'const   char   * '   or   'char   * '
---------
编译环境:   win   xp
vs2005;
------------
不知道是哪里出了问题,知道的朋友说一下呵...谢谢

------解决方案--------------------
char *sarr[5]
====================>
const char *sarr[5]
------解决方案--------------------
char *sarr[5] = 改成
const char *sarr[5] =
------解决方案--------------------
n = count(sarr, 5, "ccc ");
根据sarr来推断, T 是char *, 根据第三个参数来推断,T是const char *,所以多义了
------解决方案--------------------
"ccc "的类型是char [4],最多自动转换到const char *