// Build don't link:

class Base {
public:
  class Bar { public: virtual ~Bar() {}; };
};

class Derived : public Base {
public:
  class Bar : public Base::Bar {};
};

template <class T>
struct XYZ : public T::Bar {
  XYZ(): T::Bar() { }
};

void test() {
  XYZ<Base> b;
  XYZ<Derived> d;
}
