title: Boost::serialization and base/derived relationship not registered
body: <p>I have 2 polymorphic types that are derived from like so:</p>
  
  <pre><code>class Base1 {...};
  class Base2 {...};
  class Derived1 : public Base1 {...};
  class Derived : public Derived1, public Base2 {};
  </code></pre>
  
  <p>I use </p>
  
  <pre><code>BOOST_CLASS_EXPORT_KEY(Derived)
  </code></pre>
  
  <p>in the serialization header file for derived. and</p>
  
  <pre><code>BOOST_CLASS_EXPORT_IMPLEMENT(Derived)
  </code></pre>
  
  <p>for the translation unit implementing the serialize free function for Derived, which simply call base_object for both bases. I do this for NONE of Base1, Base2, Derived1.
  I only instantiate the serialize function for archives required for boost::mpi.
  All this is in a shared object that is linked in to generate the executable.</p>
  
  <p>Saving to the archive fails when I use a Base1* pointer.</p>
  
  <p>While debugging, i see in </p>
  
  <pre><code>boost/archive/detail/oserializer.hpp
  </code></pre>
  
  <p>that around line 393, the derived type is properly registered, but the exception is thrown just a little later at 411 where it says</p>
  
  <pre><code>"the base/derived relationship hasn't be registered"
  </code></pre>
  
  <p>and the exception shows the types</p>
  
  <pre><code>Derived 
  </code></pre>
  
  <p>and</p>
  
  <pre><code>Base1
  </code></pre>
  
  <p>How can I register the relationship itself?</p>