$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: ramey_at_[hidden]
Date: 2008-06-22 23:48:01
Author: ramey
Date: 2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
New Revision: 46621
URL: http://svn.boost.org/trac/boost/changeset/46621
Log:
Attempt to resolve problems with instantiation on Intel Platforms
Text files modified: 
   trunk/boost/archive/detail/iserializer.hpp |    12 ++++++------                            
   trunk/boost/archive/detail/oserializer.hpp |    21 +++++++++++----------                   
   trunk/boost/serialization/export.hpp       |    11 ++++++-----                             
   trunk/boost/serialization/singleton.hpp    |     5 ++---                                   
   trunk/boost/serialization/void_cast.hpp    |     7 ++++---                                 
   5 files changed, 29 insertions(+), 27 deletions(-)
Modified: trunk/boost/archive/detail/iserializer.hpp
==============================================================================
--- trunk/boost/archive/detail/iserializer.hpp	(original)
+++ trunk/boost/archive/detail/iserializer.hpp	2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
@@ -116,11 +116,11 @@
                 ::get_const_instance()
         )
     {}
-    virtual void load_object_data(
+    virtual BOOST_DLLEXPORT void load_object_data(
         basic_iarchive & ar,
         void *x, 
         const unsigned int file_version
-    ) const;
+    ) const BOOST_USED;
     virtual bool class_info() const {
         return boost::serialization::implementation_level<T>::value 
             >= boost::serialization::object_class_info;
@@ -142,7 +142,7 @@
 };
 
 template<class Archive, class T>
-void iserializer<Archive, T>::load_object_data(
+BOOST_DLLEXPORT void iserializer<Archive, T>::load_object_data(
     basic_iarchive & ar,
     void *x, 
     const unsigned int file_version
@@ -166,11 +166,11 @@
             iserializer<Archive, T>
         >::get_const_instance();
     }
-    virtual void load_object_ptr(
+    BOOST_DLLEXPORT virtual void load_object_ptr(
         basic_iarchive & ar, 
         void * & x,
         const unsigned int file_version
-    ) const ;
+    ) const BOOST_USED;
 public:
     pointer_iserializer();
 };
@@ -246,7 +246,7 @@
 };
 
 template<class Archive, class T>
-void pointer_iserializer<Archive, T>::load_object_ptr(
+BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr(
     basic_iarchive & ar, 
     void * & x,
     const unsigned int file_version
Modified: trunk/boost/archive/detail/oserializer.hpp
==============================================================================
--- trunk/boost/archive/detail/oserializer.hpp	(original)
+++ trunk/boost/archive/detail/oserializer.hpp	2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
@@ -105,16 +105,16 @@
     // private constructor to inhibit any existence other than the 
     // static one
 public:
-    explicit oserializer() :
+    explicit BOOST_DLLEXPORT oserializer() :
         basic_oserializer(
             boost::serialization::type_info_implementation<T>::type
                 ::get_const_instance()
         )
     {}
-    virtual void save_object_data(
+    virtual BOOST_DLLEXPORT void save_object_data(
         basic_oarchive & ar,    
         const void *x
-    ) const ;
+    ) const BOOST_USED;
     virtual bool class_info() const {
         return boost::serialization::implementation_level<T>::value 
             >= boost::serialization::object_class_info;
@@ -134,7 +134,7 @@
 };
 
 template<class Archive, class T>
-void oserializer<Archive, T>::save_object_data(
+BOOST_DLLEXPORT void oserializer<Archive, T>::save_object_data(
     basic_oarchive & ar,    
     const void *x
 ) const {
@@ -154,12 +154,12 @@
 {
     const basic_oserializer & get_basic_serializer() const;
 private:
-    virtual void save_object_ptr(
+    virtual BOOST_DLLEXPORT void save_object_ptr(
         basic_oarchive & ar,
         const void * x
-    ) const ;
+    ) const BOOST_USED;
 public:
-    explicit pointer_oserializer();
+    explicit BOOST_DLLEXPORT pointer_oserializer() BOOST_USED;
 };
 
 template<class Archive, class T>
@@ -171,7 +171,7 @@
 }
 
 template<class Archive, class T>
-void pointer_oserializer<Archive, T>::save_object_ptr(
+BOOST_DLLEXPORT void pointer_oserializer<Archive, T>::save_object_ptr(
     basic_oarchive & ar,
     const void * x
 ) const {
@@ -190,7 +190,7 @@
 }
 
 template<class Archive, class T>
-pointer_oserializer<Archive, T>::pointer_oserializer() :
+BOOST_DLLEXPORT pointer_oserializer<Archive, T>::pointer_oserializer() :
     archive_pointer_oserializer<Archive>(
         boost::serialization::type_info_implementation<T>::type
             ::get_const_instance()
@@ -352,7 +352,8 @@
             Archive &ar, 
             T & t
         ){
-            BOOST_DEDUCED_TYPENAME boost::serialization::type_info_implementation<T>::type 
+            BOOST_DEDUCED_TYPENAME 
+            boost::serialization::type_info_implementation<T>::type 
                 const & i = boost::serialization::type_info_implementation<T>::type
                     ::get_const_instance();
 
Modified: trunk/boost/serialization/export.hpp
==============================================================================
--- trunk/boost/serialization/export.hpp	(original)
+++ trunk/boost/serialization/export.hpp	2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
@@ -63,14 +63,14 @@
 {
     static const basic_pointer_iserializer &
     enable_load(mpl::true_){
-        return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
+        return boost::serialization::singleton<
             pointer_iserializer<Archive, Serializable> 
         >::get_const_instance();
     }
 
     static const basic_pointer_oserializer &
     enable_save(mpl::true_){
-        return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
+        return boost::serialization::singleton<
             pointer_oserializer<Archive, Serializable> 
         >::get_const_instance();
     }
@@ -87,9 +87,9 @@
 struct ptr_serialization_support
 {
 # if defined(BOOST_MSVC)
-    virtual BOOST_DLLEXPORT void instantiate() BOOST_USED;
+    BOOST_DLLEXPORT static void instantiate() BOOST_USED;
 # elif defined(__INTEL_COMPILER)
-    virtual BOOST_DLLEXPORT void instantiate() BOOST_USED;
+    BOOST_DLLEXPORT static void instantiate() BOOST_USED;
 # elif defined(__BORLANDC__)   
     static BOOST_DLLEXPORT void instantiate();
     enum { x = sizeof(instantiate(),3) };
@@ -102,7 +102,8 @@
 };
 
 template <class Archive, class Serializable>
-BOOST_DLLEXPORT void ptr_serialization_support<Archive,Serializable>::instantiate()
+BOOST_DLLEXPORT void 
+ptr_serialization_support<Archive,Serializable>::instantiate()
 {
     export_impl<Archive,Serializable>::enable_save(
         BOOST_DEDUCED_TYPENAME Archive::is_saving()
Modified: trunk/boost/serialization/singleton.hpp
==============================================================================
--- trunk/boost/serialization/singleton.hpp	(original)
+++ trunk/boost/serialization/singleton.hpp	2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
@@ -108,14 +108,13 @@
         return t;
     }
 public:
-    static T & get_mutable_instance(){
+    BOOST_DLLEXPORT static T & get_mutable_instance(){
         assert(! is_locked());
         return get_instance();
     }
-    static const T & get_const_instance(){
+    BOOST_DLLEXPORT static const T & get_const_instance(){
         return get_instance();
     }
-
 };
 
 template<class T>
Modified: trunk/boost/serialization/void_cast.hpp
==============================================================================
--- trunk/boost/serialization/void_cast.hpp	(original)
+++ trunk/boost/serialization/void_cast.hpp	2008-06-22 23:48:01 EDT (Sun, 22 Jun 2008)
@@ -22,6 +22,7 @@
 #include <boost/serialization/force_include.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/config.hpp>
+#include <boost/serialization/force_include.hpp>
 #include <boost/config/abi_prefix.hpp> // must be the last header
 
 #ifdef BOOST_MSVC
@@ -32,7 +33,7 @@
 namespace boost { 
 namespace serialization { 
 
-class extended_type_info;
+BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY()) class extended_type_info;
 
 // Given a void *, assume that it really points to an instance of one type
 // and alter it so that it would point to an instance of a related type.
@@ -138,12 +139,12 @@
         return b;
     }
 public:
-    void_caster_primitive();
+    BOOST_DLLEXPORT void_caster_primitive() BOOST_USED;
     ~void_caster_primitive();
 };
 
 template <class Derived, class Base>
-void_caster_primitive<Derived, Base>::void_caster_primitive() :
+BOOST_DLLEXPORT void_caster_primitive<Derived, Base>::void_caster_primitive() :
     void_caster( 
         type_info_implementation<Derived>::type::get_const_instance(), 
         type_info_implementation<Base>::type::get_const_instance()