title: std::copy_n doesn't change destination vector size
body: <p>If I reserve some space for a vector, and then I copy some values in it with <code>std::copy_n()</code>, I get the values copied correctly and accessible, but the size of the vector is still zero. Is this the expected behaviour? Should I resize the vector instead, even if it is not as efficient?</p>
  
  <pre><code>#include &lt;algorithm&gt;
  #include &lt;iostream&gt;
  #include &lt;vector&gt;
  
  int main()
  {
      std::vector&lt;double&gt; src, dest;
  
      for(double x = 0.0; x &lt; 100.0; ++x)
          src.push_back(x);
  
      dest.reserve(src.size());
  
      std::copy_n(src.cbegin(), src.size(), dest.begin());
  
      std::cout &lt;&lt; "src.size() = " &lt;&lt; src.size() &lt;&lt; std::endl;
      std::cout &lt;&lt; "dest.size() = " &lt;&lt; dest.size() &lt;&lt; std::endl;
  
      for(size_t i = 0; i &lt; src.size(); ++i)
          std::cout &lt;&lt; dest[i] &lt;&lt; "  ";
  
  }
  </code></pre>
  
  <p>Compilers tested: clang, gcc, Visual C++</p>