Boost logo

Boost Users :

From: Joseph Turian (turian_at_[hidden])
Date: 2007-12-13 21:43:51


I am unable to serialize STL containers.
Here's an example, with error message

foo.cpp:
#include <iostream>
#include <fstream>

#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

#include <boost/serialization/list.hpp>
#include <boost/archive/tmpdir.hpp>

class bus_route
{
    friend class boost::serialization::access;
    std::list<int> stops;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & stops;
    }
public:
    bus_route(){}
};

main() {
    std::ofstream ofs("removeme");
    boost::archive::text_oarchive oa(ofs);
    bus_route a;
        oa << a;
}

====

$ gcc -o foo foo.cpp
/usr/include/boost/archive/detail/oserializer.hpp: In function 'void
boost::archive::save(Archive&, T&) [with Archive =
boost::archive::text_oarchive, T = bus_route]':
/usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated
from 'void boost::archive::basic_text_oarchive<Archive>::save_override(T&,
int) [with T = bus_route, Archive = boost::archive::text_oarchive]'
/usr/include/boost/archive/detail/interface_oarchive.hpp:78:
instantiated from 'Archive&
boost::archive::detail::interface_oarchive<Archive>::operator<<(T&)
[with T = bus_route, Archive = boost::archive::text_oarchive]'
foo.cpp:29: instantiated from here
/usr/include/boost/archive/detail/oserializer.hpp:567: error: invalid
application of 'sizeof' to incomplete type
'boost::STATIC_ASSERTION_FAILURE<false>'

Any idea what I'm doing wrong?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net