私は次のことをします。
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'
クラスA<B<Y>>
が から完全に分離されてA
いる場合、すべてが正しく、 のメンバーが存在しない可能性がありますA
。しかし、私はの専門化が欲しいA
。すべてのコンテンツで。
または、A
for ケース when X
isの特殊なコンストラクターである可能性がありB<Y>
ます。
実装方法は?