title: std::move inside move assignment operator
body: <p>I read in <a href="https://stackoverflow.com/a/5976829/440509">another question</a> that when implementing a move constructor it is good practice to std::move each member in the initializer list because if the member happens to be another object then that objects move constructor will be called. Like so...</p>
  
  <pre><code>//Move constructor
  Car::Car(Car &amp;&amp; obj)
      : 
      prBufferLength(std::move(obj.prBufferLength)), 
      prBuffer(std::move(obj.prBuffer)) 
  {
      obj.prBuffer = nullptr;
      obj.prBufferLength = 0;
  }
  </code></pre>
  
  <p>However in all the sample move assignment operators I've seen, there has been no mention of using std::move for the same reasons. If the member is an object then should std::move be used? Like so...</p>
  
  <pre><code>//Move assignment
  Car Car::operator=(Car &amp;&amp; obj)  
  {
      delete[] prBuffer;
  
      prBufferLength = std::move(obj.prBufferLength);
      prBuffer = std::move(obj.prBuffer);
  
      obj.prBuffer = nullptr;
      obj.prBufferLength = 0;
      return *this;
  }
  </code></pre>
  
  <p><strong>UPDATE:</strong></p>
  
  <p>I appreciate there is no need to use std::move in the example I have chosen (poorly) however I'm interested in if the members were objects.</p>