类模板成员函数的显式特化
类模板中成员函数的显式特化需要显式地定义周围的类模板也专门化了。问题中的原始代码尝试在 X
要解决此问题,可以显式特化类模板和成员函数,如下所示:
template <> template <> void X<int>::get_as<double>() { }
这种方法专门针对 get_as
如果周围的类模板要保持非专业化,可以采用替代技术。其中一种方法涉及使用重载,如图所示:
template <class C> class X { template<typename T> struct type { }; public: template <class T> void get_as() { get_as(type<T>()); } private: template<typename T> void get_as(type<T>) { } void get_as(type<double>) { } };
在这种方法中,get_as() 函数重载有两个版本:一个采用通用参数,另一个专门处理 double 的情况。这允许显式特化成员函数,而不需要特化周围的类模板。
以上是如何在类模板中显式特化成员函数?的详细内容。更多信息请关注PHP中文网其他相关文章!