template struct g { using c = a; }; template class> using e = g; template class d> using f = typename e::c; struct l { template using j = typename h::k; }; struct m : l { using k = f; }; struct q : m { typedef int &n; }; int *o; q::k p; struct r { struct t { q::k aj; }; long s; r() { o = static_cast(operator new(sizeof(int))); p = s ? o : q::k(); al.aj = p; } t al; }; class G : r { public: G(int) {} q::n operator[](long u) { return *(al.aj + u); } }; int a; void fn1() { G b(0), c(0); for (int i; i; i++) { int d = 0; for (int e = -1; e <= 1; e++) { a = i + e; if (a) d = b[a]; } c[i] = d; } }