Is the order of initialization guaranteed by the standard?
<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>
