¿Cómo puedo declarar un vector miembro de la misma clase?

¿Por qué demonios funciona el siguiente código?

struct A {
    std::vector<A> subAs;
};

A es un tipo incompleto, ¿verdad? Si hubiera un vector de A * s lo entendería. Pero aquí no entiendo cómo funciona. Parece ser una definición recursiva.

Respuestas a la pregunta(1)

Su respuesta a la pregunta