// { dg-do assemble } // { dg-options "-fpermissive" } template <class T> struct B { typedef int I; }; template <class T> struct D : public B<T> { void f(); }; template <class T> void D<T>::f() { I(); // { dg-warning "" } } template <> struct B<int> { void I(); }; int main() { D<int> di; di.f(); }