我有一个模板函数:
template<typename T>
void foo(const T& value) { bar(value); x = -1; }
我想专门针对一组类型:
template<>
void foo<char>(const char& value) { bar(value); x = 0; }
template<>
void foo<unsigned char>(const unsigned char& value) { bar(value); x = 1; }
它工作正常。当我编译这个时:
template<>
void foo<char*>(const char*& value) { bar(value); x = 2; }
我得到一个错误:
error C2912: explicit specialization; 'void foo(const char *&)' is not a specialization of a function template
是否可以在不对它进行类型定义的情况下专门处理 char*
指针类型参数?
最佳答案
当然。试试这个:
template<>
void foo<char*>(char* const& value) {...}
这是因为const char*
表示指向const char
的指针,而不是指向char
的const
指针。
关于c++ - 引用指针的函数模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296907/