title: Why no default move-assignment/move-constructor?
body: <p>I'm a simple programmer.  My class members variables most often consists of POD-types and STL-containers. Because of this I seldom have to write assignment operators or copy constructors, as these are implemented by default.</p>
  
  <p>Add to this, if I use <code>std::move</code> on objects not movable, it utilizes the assignment-operator, meaning <code>std::move</code> is perfectly safe.</p>
  
  <p>As I'm a simple programmer, I'd like to take advantage of the move-capabilities without adding a move constructor/assignment operator to every class I write, as the compiler could simply implemented them as "<code>this-&gt;member1_ = std::move(other.member1_);...</code>"</p>
  
  <p>But it doesn't (at least not in Visual 2010), is there any particular reason for this?</p>
  
  <p>More importantly; <strong>is there any way to get around this?</strong></p>
  
  <p><em><strong>Update:</em></strong>
  If you look down at GManNickG's answer he provides a great macro for this. And if you didn't know, if you implement move-semantics you can remove the swap member function.</p>