title: Should std::move be used on members when initializing them in the constructor?
body: <p>I've been trying to fully understand move semantics, but I have one question, as different examples show different things.  Say we have a class Foo that has a string member str_. To define the move constructor, should I define it like this: </p>
  
  <pre><code>Foo(Foo&amp;&amp; foo) : str_(foo.str_) { }
  </code></pre>
  
  <p>or this: </p>
  
  <pre><code>Foo(Foo&amp;&amp; foo) : str_(std::move(foo.str_)) { }
  </code></pre>
  
  <p>Also, would I need to set the members of the object i am moving from to a blank value? How would I do so without constructing another string, essentially nullifying the expense saved by using a move constructor in the first place?</p>