c++ - 引用指针的函数模板特化

标签 c++ templates specialization

我有一个模板函数:

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 的指针,而不是指向charconst 指针。

关于c++ - 引用指针的函数模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296907/

相关文章:

c++ - 奇怪的指针行为 C++/继承

c++ - 需要将 MS Visual C++ 移植到 Linux G++

c++ - 减少重载函数的冗余代码(const& vs &)

c++ - 在 C++ 的可变参数模板中获取可变参数 size_t... 参数的总和

c++ - 我可以在这里使用 Curiously Recurring Template Pattern (C++) 吗?

c++ - 正确使用 Poco C++ JSON 解析数据

c++ - 将类转换为模板

C++ 模板偏特化

C++ 模板函数特化

c++ - 模板专业类中的模板特化