/* { dg-do run } */ namespace FOO { template <typename T> class A { public: void Enum(); virtual void OnProv() = 0; virtual ~A() { } }; typedef A<char> B; template<typename T> void A<T>::Enum () { OnProv (); } } // namespace FOO class C {}; class D: public C, public FOO::B { public: void OnProv() {} }; int main(int argc, char *argv[]) { D x; x.Enum(); return 0; }