1// { dg-do compile }
2
3class A
4{
5};
6template <class type> struct D:A
7{
8  type & operator[](int);
9};
10struct B
11{
12  typedef D <int *>Row;
13  struct C
14    {
15      Row *row;
16    };
17};
18B::C a;
19B::Row & b = *a.row;
20void
21fn1 ()
22{
23  while (1)
24    b[0] = b[0] ? (int *) -1 : 0;
25}
26