我执行以下操作。
template <class C> class B{};
template <class X>
struct A{
int member;
};
template <class Y>
struct A<B<Y>>{
A(int n):member(n){}
};
int main(int, char**){}
即 X 类可能是模板本身,对于这种情况,我希望对 A 类模板进行专门化。
但是编译器说:
d:\>g++ -std=gnu++11 -o spec.exe spec.cpp
spec.cpp: In constructor 'A<B<Y> >::A(int)':
spec.cpp:11:14: error: class 'A<B<Y> >' does not have any field named 'member'
如果 classA<B<Y>>
完全分开,A
那么一切都是正确的,并且可能没有A
. 但我想要专业化A
。及其所有内容。
或者,可能是一些专门的构造函数A
for case when X
is B<Y>
。
如何实施?