// PR middle-end/42760 // { dg-do compile } template struct A { static T b (T it) { return it; } }; template static U baz (T x, T y, U z) { for (long n = y - x; n > 0; --n) { *z = *x; ++z; } }; template U bar (T x, T y, U z) { baz (A ::b (x), A ::b (y), A ::b (z)); } struct C { __complex__ float v; }; template struct B { B (T y[]) { bar (y, y + 1, x); } operator T *() { return x; } T x[1]; }; B foo () { C y[1]; return B (y); };