// { dg-options "-O -Wno-psabi" } // { dg-do compile } struct A { int a; }; template struct B { V operator[] (T); }; union U { long double ld; void *v; }; A a; void bar (U &x) { if (x.v) *reinterpret_cast (x.v) = a; } struct C { C (A) { c.ld = 0; bar (c); } U c; }; struct D { A d, e; void foo () { f[0][d] = e; } B > f; }; void baz () { D d; d.foo (); }