title: Can I choose between default-initalisation and value-initialisaion or all or part of an array?
body: <p>Since C++2003 we have value-initialisation as well as default-initialisation. Meaning that:</p>
  
  <pre><code>struct Foo {
      int i;
      std :: string s;
  };
  
  Foo f1;          // f1.s is default-constructed, f1.i is uninitialised
  Foo f2 = Foo (); // f1.s is default-constructed, f1.i is zero
  </code></pre>
  
  <p>Right?</p>
  
  <p>Now suppose I have this class</p>
  
  <pre><code>class Bar : public Foo {
      int n;
      Foo f [SIZE];
  public:
      Bar ();
  };
  </code></pre>
  
  <p>When I write the constructor for <code>Bar</code>, I may want to default- or value-initialise either the parent class or the <code>f[]</code> member. I think the choice for initialising the parent is simply:</p>
  
  <pre><code>Bar :: Bar () : Foo (), n (-1) {} // Parent is value-initialised (Foo::i is zero)
  Bar :: Bar () : n (-1)         {} // Parent is default-initialised (Foo::i is undefined)
  </code></pre>
  
  <p>But what about the <code>f[]</code> member?</p>
  
  <ul>
  <li>How do I default-initialise all members?</li>
  <li>How do I value-initialise all members?</li>
  <li>If I use C++11 initializer lists, what happens if the initializer list has a different size than <code>SIZE</code>?</li>
  </ul>