------- Comment #8 from ronan dot lehy at probayes dot com  2009-01-15 15:13 
-------
If I add simple explicit instantiations in place or in addition to the
BOOST_CLASS_EXPORT() calls, all symbols are correctly exposed in all cases :
namespace boost {
    namespace serialization {
        template void
serialize<boost::archive::xml_iarchive>(boost::archive::xml_iarchive &, A &,
unsigned int);
        template void
serialize<boost::archive::xml_iarchive>(boost::archive::xml_iarchive &, B &,
unsigned int);
    } }

Therefore, there may be a problem related to the way BOOST_CLASS_EXPORT()
instantiates serialize<>(). BOOST_CLASS_EXPORT(A) expands to:

namespace boost { namespace archive { namespace detail {
      template<> const guid_initializer< A >
        guid_initializer< A >::instance("A");
      template std::pair<
        const export_generator<
          A, boost::archive::detail::known_archive_types::type> *,
        const guid_initializer< A > *>
      export_archives_invoke<
        A, boost::archive::detail::known_archive_types::type>
      (A &, boost::archive::detail::known_archive_types::type &);
    } } };


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38828

Reply via email to