union U1 {
   int i;
   long j;
   char c[256];
};

typedef U1 UU;

union U1 u_a;
UU       u_b;

template <class T>
union U2 {
    UU    x;
    T     y;
    int   (*z[10])(const int&);
};

int main()
{
    U1 u1;
    UU u2;
    u1 = (U1) u2;
}
