> That's likely something else entirely.  We'd have to see more code.
Forget my previous post, the exception was due to mixed up ofstream and ifstream... 
 
Just to resume - if I have a list of pointers to the objects (all derived from the same base class) and I'd like to serialize them through a reference, a code like this would be needed:
 
// List of pointers
A a;
B b; // Derived from A
C c; // Derived from C
std::list<A*> list; 
list.push_back(&a);  // Base
list.push_back(&b);  // Derived
list.push_back(&c);  // Derived
...
// Save
std::ofstream ofs("c:/test.xml");
boost::archive::xml_oarchive oa(ofs);
BOOST_FOREACH(A* pA, list)  
{
     if (dynamic_cast<B*>(pA))
     {
          B& b = *static_cast<B*>(pA);
          oa & BOOST_SERIALIZATION_NVP(b);
     }   
     else if (dynamic_cast<C*>(pA))
     {
          C& c = *pA;
          BOOST_SERIALIZATION_NVP(c);
     }
     else
     {
          A& a = *pA;
          BOOST_SERIALIZATION_NVP(a);
     }
}

Am I right?