title: Move-assignment and reference member
body: <p>Copy-assignment for a class with a reference member variable is a no-no because you can't reassign the reference.  But what about move-assignment?  I tried simply <code>move</code>ing it but, of course, that destroys the source object when I just want to move the reference itself:</p>
  
  <pre><code>class C
  {
  public:
      C(X&amp; x) : x_(x) {}
      C(C&amp;&amp; other) : x_(std::move(other.x_)) {}
      C&amp; operator=(C&amp;&amp; other)
      {
          x_ = std::move(other.x_);
      }
  private:
      X&amp; x_;
  };
  
  X y;
  C c1(y);
  
  X z;
  C c2(z);
  
  c2 = c1; // destroys y as well as z
  </code></pre>
  
  <p>Should I just not be implementing move-assignment and sticking with move-construction only?  That makes <code>swap(C&amp;, C&amp;)</code> hard to implement.</p>