¿Una unión o estructura permite la asignación de una instancia no inicializada?

Esta pregunta trata sobre la definición o no de asignar una variable automática no inicializada a otra del mismo tipo.

Considerar

typedef struct
{
    int s1;
    int s2;
} Foo;

typedef union
{
    int u1;
    Foo u2; 
} Bar;

int main()
{
    {
        int a;
        int b = a; // (1)
    }
    {
        Foo a;
        Foo b = a; // (2)
    }
    {   
        Bar a;
        a.u1 = 0;
        Bar b = a; // (3)
    }
}

Refiriéndose a los comentarios enmain:

(1) no está definido desdea está sin inicializar Eso lo sé.

¿Pero qué hay de (2)? Los miembros de la estructuras1 ys2 están sin inicializar

Además, ¿qué pasa con (3)? La memoria u2.s2 no está inicializada, por lo que leerla es un comportamiento indefinido, ¿no?

Respuestas a la pregunta(2)

Su respuesta a la pregunta