title: Moving to uninitialized memory, or how raw_storage_iterator works
body: <p>I want to move a range of objects into uninitialized memory (using move-construction). Since there is no move-counterpart to <code>std::uninitialized_copy</code>, I came up with two options: either use <code>std::move</code> with <code>raw_storage_iterator</code>, or resort to the manual loop:</p>
  
  <pre><code>T* dest = get_memory();
  // option one
  std::move(first, last, std::raw_storage_iterator&lt;T*, T&gt;(dest));
  // option two
  for (auto i=first; i != last; ++i, ++dest)
  {
      new(dest) T(std::move(*i));
  }
  </code></pre>
  
  <p>Will the first option do the move-construction (thus being equivalent to the second), or copy construction, or default construction followed by move assignment? Are there other considerations to prefer one option or another?</p>