Boost logo

Boost :

From: Russell Hind (rh_gmane_at_[hidden])
Date: 2004-10-21 04:00:21

Robert Ramey wrote:
> It certainly should - send me a code snippet. The package includes tests of

If I change this to use text_i/o archive then it works fine, but with
XML, m_Version is set to zero when writing, but set to 3 when reading
(this is with latest trunk from just before branch for release yesterday
morning). Also, if I provide a version number for the class of anything
but 0 then it works find (e.g. 1) but 0 or no version lead to the
ambiguity (running under borland bcc32 5.6.4)

#include <fstream>
#include <iostream>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

class Test_c
     Test_c(void) : m_Version(99999999)

     template <typename ArchiveT>
     void serialize(ArchiveT& ar, const unsigned int version)
         m_Version = version;

     unsigned int m_Version;

int main(int argc, char** argv)
Test_c Test;

     std::ofstream ofs("C:\\test.xml");
     boost::archive::xml_oarchive toa(ofs);
         toa & BOOST_SERIALIZATION_NVP(Test);
             std::cout << "Test version = " << Test.m_Version << std::endl;

     std::ifstream ifs("C:\\test.xml");
     boost::archive::xml_iarchive tia(ifs);
         tia & BOOST_SERIALIZATION_NVP(Test);
             std::cout << "Test version = " << Test.m_Version << std::endl;

     return 0;

> serialization traits determine whether or not a class is versioned. Default
> is for non primititve types to be versioned and the default version number
> is 0. The usage of version number when not necessary could be a performance
> issue so there is the option of setting serialization traits for any type so
> that versioning isn't done. For example, this is not done for STL
> collections. Review the section of the documentation "serialization traits"

Thanks, I will do.



Boost list run by bdawes at, gregod at, cpdaniel at, john at