参考指针的函数模板特化

pin*_*33n 11 c++ templates specialization

我有一个模板功能:

template<typename T>
void foo(const T& value) { bar(value); x = -1; }
Run Code Online (Sandbox Code Playgroud)

我想专门针对一组类型:

template<>
void foo<char>(const char& value) { bar(value); x = 0; }
template<>
void foo<unsigned char>(const unsigned char& value) { bar(value); x = 1; }
Run Code Online (Sandbox Code Playgroud)

它工作正常.当我编译这个:

template<>
void foo<char*>(const char*& value) { bar(value); x = 2; }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

error C2912: explicit specialization; 'void foo(const char *&)' is not a specialization of a function template
Run Code Online (Sandbox Code Playgroud)

是否可以专门使用char*指针类型参数而不用typedef?

Chr*_*ung 20

当然.试试这个:

template<>
void foo<char*>(char* const& value) {...}
Run Code Online (Sandbox Code Playgroud)

这是因为const char*指向指针const char而不const指向指针char.