我们可以为模板化的类专门化模板类吗?
template<>
class Storage8<MyClass<T>>
{
—
—
};
这里MyClass是一个模板类。以上是否有价值?我们在哪里提到 MyClass的模板?
答案 0 :(得分:1)
你完全可以。例如:
#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;
}
答案 1 :(得分:1)
这应该有效:
// 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>>
{
};