Orden de evaluación de la lista de inicialización del constructor

Tengo un constructor que toma algunos argumentos. Asumí que se construyeron en el orden indicado, pero en un caso parece que se estaban construyendo en reversa, lo que resultó en un aborto. Cuando revocé los argumentos, el programa dejó de abortar. Este es un ejemplo de la sintaxis que estoy usando. La cosa es que, a_ necesita ser inicializado antes de b_ en este caso. ¿Se puede garantizar el orden de construcción?

p.ej.

class A
{
  public:
    A(OtherClass o, string x, int y) :
      a_(o), b_(a_, x, y) { }

    OtherClass a_;
    AnotherClass b_;
};

Respuestas a la pregunta(3)

Su respuesta a la pregunta