c – 是否可以为模板类的成员函数编写特化?

c – 是否可以为模板类的成员函数编写特化?,第1张

概述template <class T, bool flag>class A{ //... void f() { std::cout << "false" << std::endl; } //...};template<class T>void A<T, true>::f<T, true>(){ std::cout << "
template <class T,bool flag>class A{    //...    voID f()    {        std::cout << "false" << std::endl;    }    //...};template<class T>voID A<T,true>::f<T,true>(){    std::cout << "true" << std::endl;}

上面的代码是错误的,不编译,但你知道我将要做什么.那我该怎么做呢?

解决方法 你不能只专门化一个类的方法.通常你可以在同一个T上使用模板嵌套类来解决这个问题.

template <class T,bool flag>class A{    //...    template <class Q,bool flag>    class F_Helper    {        voID operator()()        {            std::cout << "false" << std::endl;        }    };    template <class Q>    class F_Helper<Q,true>    {        voID operator()()        {            std::cout << "true" << std::endl;        }    };    F_Helper<T> f;    //...};

显然,如果您确实需要访问封闭类’this指针,则需要更多的样板.

总结

以上是内存溢出为你收集整理的c – 是否可以为模板类的成员函数编写特化?全部内容,希望文章能够帮你解决c – 是否可以为模板类的成员函数编写特化?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存