// { dg-do compile } | |
// { dg-additional-options "-w" } | |
void a(const char *, int, const char *, const char *); | |
template <typename b> void c(b); | |
struct d { | |
long e; | |
template <typename> union f; | |
template <typename h> union f<h *> { | |
f(h *i) : j(i) {} | |
h *j; | |
long bits; | |
}; | |
static int k(volatile long &i) { return *(int *)f<volatile long *>(&i).bits; } | |
typedef long g; | |
operator g() volatile { | |
int l = k(e); | |
c(l); | |
} | |
}; | |
struct : d { | |
} m, n; | |
bool o; | |
void p() { (o ? m : n) ? (void)0 : a("", 5, "", ""); } | |