繁体   English   中英

我们可以专门针对模板化类的模板类吗?

[英]Can we specialize a template class for a templated class?

我们可以专门针对模板化类的模板类吗?

template<>
class Storage8<MyClass<T>>
{
—
—
};

MyClass是模板化的类。 以上内容是否有效? 我们在哪里必须提及MyClass的模板?

你完全可以。 例:

#include <vector>
using std::vector;

template<typename T>
struct X {
    static const int A = 0;
};

template<typename U>
struct X<vector<U> > {
    static const int A = 1;
};

int main() {
    static_assert(X<vector<int> >::A == 1, "fail");
    return 0;
}

这应该工作:

// class templae for Storage8. It can just be a forward declaration
template <typename T> class Storage8;

// or a default defintion.
template <typename T> class Storage8
{
};

// Class templae for MyClass
template <typename T>
class MyClass
{
};

// Specialization of Storage8 for MyClass<T>
template <typename T>
class Storage8<MyClass<T>>
{
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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