鉴于以下计划:
template <class T>
class A {
void f();
};
template <class T>
class B { };
template <class T>
void A<B<T> >::f() {
}
我收到错误:
invalid use of incomplete type ‘class A<B<T> >’
这是否算作部分专业化?我一直认为部分专业化只专注于模板参数的结构子集。
我是否有任何工作可以完成模板化模板的专门化?
答案 0 :(得分:0)
不可能只部分专门化一个成员函数,你必须专门化整个类
template <class T>
class A {
void f();
};
template <class T>
class B { };
template <class T>
class A<B<T> >{
void f() { /* put here what you need in this special case */};
};