是否可以重载模板类?
我发现模板方法可以重载,我可以在模板类上做同样的事情吗?如果两个模板类与一个模板类实例化相匹配,我们可以使用构造函数中的参数类型来推断使用哪一个。
template <typename T>
class A{
A(T){}
};
template <typename T>
class A{
A(T*){}
};
int main(){
A<int*> a((int*)0);
A<int> a((int*)0);
return 0;
}
I found that template method could be overloaded, can I do the same on template classes? If 2 template classes match a template class instantiation, we can use the parameter type in the constructor to deduce which one to use.
template <typename T>
class A{
A(T){}
};
template <typename T>
class A{
A(T*){}
};
int main(){
A<int*> a((int*)0);
A<int> a((int*)0);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不可以,这是不允许的。相反,类模板可以是专门化的(包括部分专门化)。这几乎达到了重载的效果(仅适用于函数)。
请注意,模板参数不能从构造函数参数推导出来。
No. This is not allowed. Instead class template can be specialized (including partial specialization). This pretty much achieves the effect of overloading (which is only for functions)
Note that template parameters can not be deduced from constructor arguments.