Kolejność oceny listy inicjalizacyjnej konstruktora

Mam konstruktora, który pobiera pewne argumenty. Założyłem, że zostały skonstruowane w podanej kolejności, ale w jednym przypadku wydaje się, że były konstruowane w odwrotnej kolejności, co skutkowało przerwaniem. Kiedy odwróciłem argumenty, program przestał przerywać. To jest przykład składni, której używam. Rzecz w tym, że w tym przypadku a_ musi zostać zainicjowane przed b_. Czy możesz zagwarantować kolejność budowy?

na przykład

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

    OtherClass a_;
    AnotherClass b_;
};

questionAnswers(3)

yourAnswerToTheQuestion