One thing that I wonder about here.  Binary archives, the stream should be opened with ios::binary.  I'm not sure how that works with string stream.
 
Another difference betwen binary and other archives is the special handling for vectors and arrays.  I wouldn't think this should matter here, but it might be looked into.  Try thsi:
 
 
 
Robert Ramey
"Jerry" <jerry@chordia.co.uk> wrote in message news:1b7001c88af9$2cfc4840$0565a8c0@p424...
Using Boost 1.34.1 with VC++ 7.1 SP1
 
I have existing code which serializes/de-serializes correctly to boost::archive::xml_oarchive
 
Within the same .cpp file I'm trying to serialize instances of the same hierarchy to boost::archive::binary_oarchive using this code:
 
// ultimate sink for serialized data
std::ostringstream os;
// binary format is OK as it is going onto the clipboard
boost::archive::binary_oarchive oa(os);
// temp storage
std::vector<CDiagramEntity*> vec;
// only serialize selected items
for (std::vector<CDiagramEntity*>::iterator it = m_entities.begin();

it != m_entities.end();

++it)
{
if ((*it)->IsSelected())
 // instead of this: 

 // vec.push_back((*it));

try this:

    oa & make_nvp("it", *it);

}
// just serialize the selected item vector (*)
oa & BOOST_SERIALIZATION_NVP(vec);

* - This is failing in oserializer.hpp line 417, the relevant code being:

// sice true_type is valid, and this only gets made if the
// pointer oserializer object has been created, this should never
// fail
bpos_ptr = archive_pointer_oserializer<Archive>::find(* true_type);
assert(NULL != bpos_ptr);     // <------------------ this assert triggered.

I note the confident comment above find(). Can anyone help here?

Many thanks

Jerry


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users