繁体   English   中英

参考指针的函数模板特化

[英]Function template specialization with reference to pointer

我有一个模板功能:

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*指针类型参数而不用typedef?

当然。 尝试这个:

template<>
void foo<char*>(char* const& value) {...}

这是因为const char*表示指向const char指针,而不是指向charconst指针。

您通常应该避免使用函数模板特化:如果您提供非模板重载,则会遇到更少的问题。 阅读更多: 为什么不专门化功能模板?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM