title: c++ no matching function for call to vector push_back
body: <p>I have a vector like this:</p>
  
  <pre><code>std::vector&lt;std::unique_ptr&lt;Service&gt; &gt; m_vec;
  </code></pre>
  
  <p>I can run push_back like this:</p>
  
  <pre><code>m_vec.push_back(std::make_unique&lt;Service&gt;());
  </code></pre>
  
  <p>But when I run it like this:</p>
  
  <pre><code>std::unique_ptr&lt;Service&gt; pt = std::make_unique&lt;Service&gt;();
  m_vec.push_back(pt);
  </code></pre>
  
  <p>I got error <code>no matching function for call to ‘std::vector&lt;std::unique_ptr&lt;Service&gt; &gt;::push_back(std::unique_ptr&lt;Service&gt;&amp;)</code></p>
  
  <p>Does <code>&amp;</code> mean that I'm pushing a reference to the vector? If so, why can't I push a reference?</p>