title: Initialization to same variable
body: <p>I just found this as a mistype in my unit testing code:</p>
  
  <pre><code>Binding binding(x, y, z);
  Binding moved(std::move(moved));  // Should be `std::move(binding)`
  </code></pre>
  
  <p>Why is this valid code? What is happening here? Shouldn't this be an error?</p>
  
  <pre><code>#include &lt;string&gt;
  #include &lt;iostream&gt;
  
  int main() {
      std::string x(std::move(x));
      std::cout &lt;&lt; '"' &lt;&lt; x &lt;&lt; '"' &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p><a href="http://coliru.stacked-crooked.com/a/7b7097cc7f1b4257" rel="nofollow">Compiled with gcc 4.8</a></p>