1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// { dg-do assemble } class Base { public: class Bar { public: virtual ~Bar() {} }; }; class Derived : public Base { public: class Bar : public Base::Bar {}; }; template <class T> class XYZ : public T::Bar { }; void test() { XYZ<Base> b; XYZ<Derived> d; }