title: Move semantic and multiple inheritance
body: <p>I'm currently using c++11 standard and here is my problem.</p>
  
  <p>I have a code where I build a struct and pass it to a class for initialization purpose only.</p>
  
  <p>I used move semantic to avoid duplicating the data structure.</p>
  
  <p>This class inherits multiple classes needs all or part of the struct and stores references to it/its components.</p>
  
  <p>Here is an example:</p>
  
  <pre><code>class ConcreteClass : public BaseClassA, public BaseClassB
  {
  public:
      ConcreteClass(Data&amp;&amp; data)
          : BaseClassA(data),
            BaseClassB(data),
            _data(std::move(data)) // How could I store data in _data and forward _data reference to parent classes ?
      {
      }
  
      /* Class functions here */
  
  private:
      const Data _data;
  };
  
  int main()
  {
      int i = 1;
      Data dat = { i, "test", std::make_shared&lt;std::string&gt;("test2") };
      ConcreteClass instance(std::move(dat));
  
      /* Do stuff with instance */
  
      return 0;
  }
  </code></pre>
  
  <p><a href="http://coliru.stacked-crooked.com/a/a5425d93159cf5b9" rel="nofollow noreferrer">Here</a> is a full example. </p>
  
  <p>As expected, the shared shared_pointer and reference stored are consistent.
  The problem being reference on instances (<code>Data::Str</code> member in this case)</p>
  
  <p>How could I store data in _data and forward _data reference to parent classes?</p>
  
  <p><strong>Extra question</strong></p>
  
  <p>Is the default rvalue reference constructor sufficient?</p>