title: std::unique_ptr usage
body: <pre><code>std::unique_ptr&lt;int&gt; p1(new int);
  std::unique_ptr&lt;int&gt; p2(new int);
  p2=p1;
  </code></pre>
  
  <p>It seems here that p1 is no longer "unique" since p2 refer to it also</p>
  
  <p>It is legal c++ ? 
  Does unique_ptr have copy_semantics ? 
  If no, and if it has only move semantics, is p1 set to NULL after assign it to p2 ? </p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>ok so the correct version is</p>
  
  <pre><code> p2=std::move(p1)
  </code></pre>
  
  <p>According to that, after this assign, p1 is not valid ? And the difference with auto_ptr is here? it is more safe to explictly specfiy transfer of ownership than implicitly as it is the case with auto_ptr I guess</p>