// { dg-do run } extern "C" void abort (); void g (char c) { if (c != 'a') abort (); } void h (int i) { if (i != 3) abort (); } template void f(T const &t) { union { char c; T t_; }; c = 'a'; g (c); t_ = 3; h (t_); } int main () { f (3); }