Hello,

J'ai remarqué ya quelques temps que gcc se plaignait lorsque l'ordre d'initialisation des attributs dans le constructeur était différent de l'ordre de déclaration des attributs dans la classe / struct.

Cela veut-il dire qu'un attribut déclaré avant un autre sera initialisé avant un autre, et pourra dont être utilisé pour initialisé un autre attribut ?

Un petit exemple pour mieux expliquer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Foo {
	const int val;
 
	Foo(int v=42): val(v) { }
	Foo(const Foo& foo): val(foo.val) { }
};
 
struct Bar {
	const Foo a;
	const Foo b;
 
	Bar(int val):
		a(val),
		b(a) // ok car a déclaré avant dans Bar ?
		// mais serait faux si b déclaré avant a dans la struct ?
	{ }
};