![](/img/trans.png)
[英]How to define member function of partially specialized template class using boost::enable_if
[英]How to define a function for a (somewhat) partially specialized class
我不确定我想做的事情是否可行。 这是一个例子:
template <typename T>
class Ref
{
void Decrement();
};
template <typename T>
class Collection {};
// This will error
template <>
template <typename T>
void Ref<Collection<T>>::Decrement() {}
你不能只在类模板中专门设计一个函数; 你必须专门化类模板作为一个整体。
template <typename T>
class Ref
{
void Decrement();
};
template <typename T>
class Collection {};
template <typename T>
class Ref<Collection<T>> {
void Decrement() {}
};
您可以在类中专门化一个函数模板, 即 :
class Ref {
template <typename U> void Decrement();
};
或者类模板中的函数模板......
template <typename T>
class Ref {
template <typename U> void Decrement();
};
但是,即便如此,对于函数模板也无法进行部分特化 ,这是您想要做的事情。 函数模板只能完全专用于各个类型,并且从不部分专门化,而类模板可以是部分或完全专用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.