$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Olivier Vanden Bos (olivier.vanden-bos_at_[hidden])
Date: 2005-05-10 12:38:13
I think there have been a lot of discussion about this,   
It might been related to the template serialization traits in the
documentation , but the explanation was a little to subtle for me, \
 
In fact, I cannot really understand how to avoid
The unregistered exception when I use a template like this.
 
 
// template declaration pseudo code
 
Class A
{
            Virtual ~A(){};
            template<class Archive> void serialize(Archive & ar, const
unsigned int version){};
};
 
Template <T> Class B : public A
{
T Object;
 
            B(T& _object)
{
Object=_object;
}
            
            template<class Archive> void serialize(Archive & ar, const
unsigned int version)
{
            Ar & Object;
};
}
 
 
//Main Code
 
Vector<A*> array;
 
Template<T> void Add(T& val)
{
      B<T>* objectToAdd= new B<T>(val)
array.push_back(objectToAdd);
}
 
//User code
 
Add((int)0);
 
 
 
And when i archive the array in another .cpp the exception is raised,
because
the class B<int> as not been exported.
 
I would like to avoid explicitly declare 
BOOST_CLASS_EXPORT_GUID(B<int>, "B_int")
For each instanciation of B<> somewhere in the global space.
In the Add() or in the template declaration that s ok, but I cannot
suppose what types that the user will use.
 
Thanks in advance..
 
- VDB -                              
 "LNK2019: unresolved external symbol" 
                   
 Olivier Vanden Bos         MSN#TheVdeub_at_[hidden]       
 AI Programmer 
 UBISOFT Montreal