class C; class D; template class E { template friend class E; template friend class F; }; template class F : public E { template friend class E; }; void f(void) { E ec; F fd; }