c函数模板专业化

c函数模板专业化,第1张

概述给出这个代码: class X{public: template< typename T > void func( const T & v );};template<>void X::func< int >( const int & v ){}template<>void X::func< char * >( const char * & v ) 给出这个代码:
class X{public:    template< typename T >    voID func( const T & v );};template<>voID X::func< int >( const int & v ){}template<>voID X::func< char * >( const char * & v )       // 16{}

当我编译它,我得到以下错误.

test.cpp:16: error: template-ID 'func<char*>' for 'voID X::func(const char*&)' does not match any template declaration

任何人都可以看清这个吗?

解决方法 你面对这个错误的原因是因为你在类型之前编写const.虽然这是常见的做法,但不利于理解const / volatile限定词(cv-qualifIEr)的工作原理.

在这种情况下,当T为char *时,const T不表示const char *.这意味着char * const,因为T是char *,无论T的任何一面都放在const上,它的行为就像在T右边的const一样,也就是指针本身就不会是const .

如果您将规则总是将const或volatile放在类型的右侧,那么很容易避免这种混淆.例如,当T是char *到char * const时,它可以直观的展开T const.

这是增加资源的原因,您看到类型之后的cv-qualifIErs,而不是之前.

总结

以上是内存溢出为你收集整理的c函数模板专业化全部内容,希望文章能够帮你解决c函数模板专业化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1255896.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存