Clases base virtuales orden de creación

Tengo el siguiente problema:

struct A1 {
    A1() { std::cout << "A1, "; }
};

struct A2 {
    A2() { std::cout << "A2, "; }
};

struct AA1 : virtual A1,  A2 {
    AA1() { std::cout << "AA1, "; }
};

struct AA2 : A1, virtual A2 {
    AA2(){ std::cout << "AA2, "; }
};

struct B : AA1, virtual AA2 {
    B() { std::cout << "B "; }
};

int main() {
    B b;
}

Cuando ejecuta este código, la respuesta es:

A1 A2 A1 AA2 A2 AA1 B

Quiero entender donde es el primeroA1 creado.

Sé la regla de que las clases virtuales se llaman antes que las clases no virtuales, pero que primero A1 es el problema que me está molestando.

Respuestas a la pregunta(2)

Su respuesta a la pregunta