/* { dg-do compile { target { s390*-*-* } } } */ /* { dg-options "-O3 -march=arch12 -std=c++11 -Wno-return-type" } */ struct a { enum { b }; }; struct c { template static void f(d g, e h) { d i; for (; i != g; ++h, ++i) *h = *i; } }; template void j(d g, e h) { c::f(g, h); } template void l(d g, e h) { j(g, h); } template void aa(d g, e h) { l(g, h); } template class ab; template <> struct ab { _Complex m() { return n; } _Complex n; }; template <> struct ab { ab(ab g) : n(g.m()) {} _Complex long double n; }; template class p { public: template p &operator=(const p &); o *ad; }; template class r : public p<2, o> {}; template template p &p::operator=(const p &g) { aa(&g.ad[0], &ad[0]); } template class s : public r { template s &operator=(const s &); }; template template s &s::operator=(const s &g) { p<2, ae>::operator=(g); } template s> &s>:: operator=(const s> &);