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