title: Is the order of initialization guaranteed by the standard?
body: <p>In the following code snippet d1's initializer is passed d2 which has not been constructed yet (correct?), so is the d.j in D's copy constructor an uninitialized memory access?</p>
  
  <pre><code>struct D
  {
      int j;
  
      D(const D&amp; d) { j = d.j; }
      D(int i) { j = i; }
  };
  
  struct A
  {
      D d1, d2;
      A() : d2(2), d1(d2) {}
  };
  </code></pre>
  
  <p>Which section of C++ standard discusses order of initialization of data members?</p>