1// PR middle-end/42760 2// { dg-do compile } 3 4template <typename T> 5struct A 6{ 7 static T b (T it) { return it; } 8}; 9 10template <typename T, typename U> 11static U 12baz (T x, T y, U z) 13{ 14 for (long n = y - x; n > 0; --n) 15 { 16 *z = *x; 17 ++z; 18 } 19}; 20 21template <typename T, typename U> 22U 23bar (T x, T y, U z) 24{ 25 baz (A <T>::b (x), A <T>::b (y), A <U>::b (z)); 26} 27 28struct C 29{ 30 __complex__ float v; 31}; 32 33template <class T> 34struct B 35{ 36 B (T y[]) { bar (y, y + 1, x); } 37 operator T *() { return x; } 38 T x[1]; 39}; 40 41B <C> 42foo () 43{ 44 C y[1]; 45 return B <C> (y); 46}; 47