title: Move constructors and multiple inheritance
body: <h2>Synopsis</h2>
  
  <p>How can I safely design a move constructor when a class uses multiple inheritance?</p>
  
  <h2>Details</h2>
  
  <p>Consider the following scenario:</p>
  
  <pre><code>struct T { };
  struct U { };
  
  struct X : public T, public U
  {
      X(X&amp;&amp; other)
        : T(std::move(other))
        , U(std::move(other)) // already moved?!
      {
      }
  };
  </code></pre>
  
  <p>Is there a way to move-construct both <code>T</code> and <code>U</code> safely?</p>