title: Why is std::move( arg ) altering arg argument?
body: <p>Having code</p>
  
  <pre><code>string one = "one";
  string two{ one };
  string three{ move(one)};
  cout &lt;&lt; one  &lt;&lt; endl;
  </code></pre>
  
  <p>this prints "". It is due to fact that moving constructor for string three is invoked and stole its argument value. However, how come variable one is modified?</p>
  
  <p>When we pass <code>move(one)</code> rvalue is returned. And move constructor steals resource from THAT rvalue, the variable one is not passed as reference or pointer there. So how come behavior like this happen?</p>
  
  <p>thanks for answers</p>