给定以下程序:
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> >’这算不算部分专业化?我一直认为部分专门化只是对模板参数的结构子集进行专门化。
有没有什么关于ao的工作我可以用模板化的类型来完成专门化模板?
发布于 2014-12-17 23:05:56
不能只部分专门化一个成员函数,必须专门化整个类
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 */};
};https://stackoverflow.com/questions/27528142
复制相似问题