Ordem de avaliação da lista de inicialização do construtor
Eu tenho um construtor que leva alguns argumentos. Eu tinha assumido que eles foram construídos na ordem listada, mas em um caso, parece que eles estavam sendo construídos em sentido inverso, resultando em um aborto. Quando inverti os argumentos, o programa parou de ser abortado. Este é um exemplo da sintaxe que estou usando. A coisa é, a_ precisa ser inicializado antes de b_ neste caso. Você pode garantir a ordem de construção?
por exemplo.
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};