c++ 中模板的部分特化
是否可以在 C++ 中做这样的事情:
template<class T1, class T2>
class A<T1*, T2> {
T1* var;
T2 var1;
};
template<class T1, class T2>
class A<T1, T2*> {
T1 var;
T2* var1;
};
实际上,我想知道当两个类具有相同的名称但模板中的参数不同时,我是否可以实现模板重载,提前感谢您的任何好主意
is it possible to do in c++ something like that:
template<class T1, class T2>
class A<T1*, T2> {
T1* var;
T2 var1;
};
template<class T1, class T2>
class A<T1, T2*> {
T1 var;
T2* var1;
};
Actually I want to know if I can reach template overloading, when two classes have the same name but different arguments in template, thanks in advance for any good idea
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就是所谓的部分模板特化
当然,为了安全起见,您需要第三个模板
A
。否则你会得到两个都是指针的歧义。That's known as partial template specialization
Of course, you need a third one for
A<T1*, T2*>
to play safe. Otherwise you will get an ambiguity of both are pointers.如果你想知道没有指针的类型,你可以使用
boost::type_traits
:remove_pointer
模板很容易自己编写:If you want to know the type without pointer you can use
boost::type_traits
:remove_pointer
template is easy to write on your own: