title: Why can't I move unique_ptr out of multiset while compiler is happy to do it with vector?
body: <p>The simple code below would not compile using Clang on Mac, </p>
  
  <pre><code>void foo(std::vector&lt;std::unique_ptr&lt;int&gt; &gt; &amp;fromVector, 
           std::multiset&lt;std::unique_ptr&lt;int&gt; &gt; &amp;fromMultiset) {
  
               std::vector&lt;std::unique_ptr&lt;int&gt; &gt; to;
               auto fv = fromVector.begin();
               to.push_back(std::move(*fv));
               auto fms = fromMultiset.begin();
               to.push_back(std::move(*fms));
           }
  </code></pre>
  
  <p>Compiler complains that pushing back rvalue obtained by std::move(*fms) necessitates invocation of deleted copy constructor. On the other hand Clang seems to be happy with similar operation on vector. Am I doing something wrong? </p>