(此代码导致编译时错误).
例如,我想仅在派生类中添加特定的模板特化.
struct Base { template <typename T> voID Method(T a) { T b; } template <> voID Method<int>(int a) { float c; }};struct Derived : public Base { template <> voID Method<float>(float a) { float x; }};解决方法 怎么过载
struct Base { template <typename T> voID Method(T a) { T b; } voID Method(int a) { float c; }};struct Derived : public Base { using Base::Method; voID Method(float a) { float x; }};
无法像示例中那样添加显式特化.此外,您的Base类格式不正确,因为您必须在类的范围之外定义任何显式特化
struct Base { template <typename T> voID Method(T a) { T b; }};template <> voID Base::Method<int>(int a) { float c;}
所有显式特化都需要将模板的名称赋予特殊性,或者与模板位于同一范围内.你不能像这样在Derived类中编写显式的特化.
总结以上是内存溢出为你收集整理的C模板专业化全部内容,希望文章能够帮你解决C模板专业化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)