title: Serialization of boost::shared_ptr through a custom archive
body: <p>I'm trying to serialize a boost::shared_ptr to a custom archive. The main problem I'm facing is that the boost::serialization code for shared_ptr requires the archive to have both a 'reset' and an 'append' method.</p>
  
  <p>Does anyone know where these methods are documented? The Archive Concept in boost says nothing about these methods (or at least I wasn't able to find anything), and could not even find the declarations of such methods on text_iarchive (or base classes). However, usage of text_iarchive is possible without any problems.</p>
  
  <p>On the other hand, with my own archive the code would not compile:</p>
  
  <pre><code>class my_iarchive : public boost::archive::detail::common_iarchive&lt;my_iarchive&gt; {
      // load, load_binary, load_override, etc. ...
  };
  </code></pre>
  
  <p><strong>/usr/include/boost/serialization/shared_ptr.hpp:139:5: error: ‘class my_iarchive’ has no member named ‘reset’</strong></p>
  
  <p>Answer ( courtesy of Tawnos )</p>
  
  <pre><code>#include &lt;boost/archive/shared_ptr_helper.hpp&gt;
  
  class my_iarchive : public boost::archive::detail::common_iarchive&lt;my_iarchive&gt;,
                      public boost::archive::detail::shared_ptr_helper {
       //load, load archive, etc.
  };
  </code></pre>