// Build don't link: template struct A { typedef T A_Type; }; template struct B : public A { typename B::A_Type Func(); }; template typename B::A_Type B::Func() { }