title: error: call to implicitly-deleted copy constructor of 'std::__1::unique_ptr<A, std::__1::default_delete<A> >'
body: <p>I'm constructing an object that takes a <code>std::vector&lt;std::unique_ptr&lt;A&gt; &gt;</code> as an argument. The constructor is defined like this</p>
  
  <pre><code>class B {
      std::vector &lt;std::unique_ptr&lt;A&gt; &gt; e_;
  
  public:
      B(std::vector &lt;std::unique_ptr&lt;A&gt; &gt; e) : e_(std::move(e)){}
  
  };
  </code></pre>
  
  <p>and then used as</p>
  
  <pre><code>std::vector &lt;std::unique_ptr&lt;A&gt; &gt; e;
  B b(e);
  </code></pre>
  
  <p>and Xcode presents the error </p>
  
  <pre><code>error: call to implicitly-deleted copy constructor of 'std::__1::unique_ptr&lt;A, std::__1::default_delete&lt;A&gt; &gt;'
  :new((void*)__p) _Up(_VSTD::forward&lt;_Args&gt;(__args)...);
                   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
  </code></pre>
  
  <p>Why is the error still persisting even though i am using <code>std::move()</code>?</p>
  
  <p>EDIT: the error seems to vanish if i use <code>B b(std::move(e))</code> instead of <code>B b(e))</code>, is there any way to move the <code>move</code> logic to the implementation of the function?</p>