繁体   English   中英

如何为(某种程度上)部分专用的类定义函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM