хочется чего то такого
template <typename T> struct A{};
template <typename S> struct C{
void f();
};
template <typename T> void C<A<T> >::f(){}
int main(int argc, const char**argv){
C<A<int> > c;
return 0;
}
tmp$ g++ -std=c++11 -Wall test.cpp
test.cpp:7:40: error: invalid use of incomplete type ‘struct C<A<T> >’
template <typename T> void C<A<T> >::f(){}
^
test.cpp:3:30: note: declaration of ‘struct C<A<T> >’
template <typename S> struct C{
^