title: uninitialized move in std::vector
body: <p>I use visual studio 2010 and its stl implementation is from <a href="http://www.dinkumware.com" rel="nofollow">dinkumware</a></p>
  
  <p>I noticed that when internal buffer of vector grows, there is a _Uninitialized_move is called. which is much like std::uninitialized_copy.</p>
  
  <ol>
  <li>for scalar type, it eventually forwards call to memmove</li>
  <li>for non-scalar type, it will call copy constructor of contained type.</li>
  </ol>
  
  <p>I know that for non-scalar type, bit-wise coping isn't safe, but I am get confused in this case, because the old objects will be destroyed very soon. it looks like that bit-wise coping for all types is safe, and hence we only need free raw buffer after _Uninitialized_move. this will save lots of copy constructor and destructor for non-trivial objects.</p>
  
  <p>so, is it safe to just move contents for non-scalar type?</p>