title: std::fill_n on array of non-PODs possible for first initializing?
body: <p>is it possible to use <code>std::fill</code> to initialize an array of non-POD types?</p>
  
  <p>The documentation says that <code>std::fill</code> uses <code>operator=</code> to initialize the array not placement copy construction. The assignment operator, however, does not really have a chance to free any current memory when it is called on an uninitialized space, as far as I can see.</p>
  
  <p>Example:</p>
  
  <pre><code>struct NonPod
  {
      std::string myStr;
  };
  
  NonPod arr[10];
  NonPod prototype;
  NonPod * ptr = &amp;arr[0];
  std::fill_n(ptr, 10, prototype);
  </code></pre>