1// { dg-do compile }
2
3struct Layer;
4template <typename> struct A
5{
6  Layer *m_fn1 ();
7  Layer &operator[](int p1) { return m_fn1 ()[p1]; }
8};
9struct Layer
10{
11};
12void fn1 (A<int> &p1, int Layer::*p2, int p3)
13{
14  for (int a = 0;; ++a, ++p3)
15    p1[p3].*p2 = p1[a].*p2;
16}
17