class X {
private:
  template <class T>
  class Y {
    public:
    void f() {}
  };
protected:
  Y<int> m;
};

class Z : public virtual X {
public:
  void f() {
    m.f();
  }
};

int main () {}
