// { dg-do assemble } class Base { public: class Bar { public: virtual ~Bar() {} }; }; class Derived : public Base { public: class Bar : public Base::Bar {}; }; template struct XYZ : public T::Bar { XYZ(): T::Bar() { } }; void test() { XYZ b; XYZ d; }