template<class T> class BB; template<class A,class B=BB<A> > class C { //... }; class X; template<class B> class C<X,B> { //... };