私は次のことをします。
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。すべてのコンテンツで。
または、Afor ケース when Xisの特殊なコンストラクターである可能性がありB<Y>ます。
実装方法は?