Ordem de criação de classes base virtuais

Eu tenho o seguinte 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;
}

Quando você executa esse código, a resposta é:

A1 A2 A1 AA2 A2 AA1 B

Eu quero entender onde é o primeiroA1 criado.

Conheço a regra de que as classes virtuais são chamadas antes das classes não virtuais, mas a primeira A1 é o problema que está me incomodando.

questionAnswers(2)

yourAnswerToTheQuestion