Consider the following code:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
D d;
The Visual Studio's compiler first calls the constructor of class B, then the constructor of class C. But is this a Rule, i.e. does the ISO C++ standard guarantee the order of constructor call?