title: Initialize array in constructor without using default constructor or assignment
body: <p>Consider:</p>
  
  <pre><code>struct A {
  
   A (int);
  
   A (const A &amp;);
  };
  
  struct B {
  
   A foo [2];
  
   B (const A &amp; x, const A &amp; y)
   : foo {x, y} /* HERE IS THE PROBLEM */
   {}
  };
  </code></pre>
  
  <p>I was expecting this to work since I'm using C++0x support in GCC4.3, which allegedly supports initialiser lists. No joy.</p>
  
  <p>I have a class A which has no default constructor. This is not negotiable. Assignment post-default is not an option.</p>
  
  <p>I am trying to create B which uses A. B::foo may not be std::vector.</p>
  
  <p>How can I initialise <code>B::foo</code> in <code>B(...)</code>, constructing its elements exactly once?</p>
  
  <p>At the moment, I am condidering replacing B with</p>
  
  <pre><code>struct B {
  
  A foo_a;
  
  B foo_b;
  
  A * foo () {
  assert ((&amp;foo_b) - *&amp;foo_a) == 1);
  return &amp;foo_a;
  }
  
  B (const A &amp; x, const A &amp; y) : foo_a(x), foo_b(y) {}
  };
  </code></pre>
  
  <p>Or even using <code>char foo [2*sizeof(A)]</code> with placement new -- YUK!</p>
  
  <p>Surely there's a proper way to do this?</p>