How to use boost serialization and standard arrays?
I've spent quite a bit of time searching and reading, but I can't understand why the following is happening. Given a simple function: (non-boost headers) . . . #include <boost/archive/binary_oarchive.hpp> #include <boost/serialization/array.hpp> . . . void archive_data(void) { ofstream ofs(context.archive_name()); boost::archive::binary_oarchive ar(ofs); array<int, 10> test; ar << test; } I get: /usr/include/boost/serialization/access.hpp:118:9: error: ‘struct std::array<int, 10u>’ has no member named ‘serialize’ ---- The documentation says:
This group of headers includes templates which implement serialization for Standard Library or Boost Library templates. Any program which uses these templates can invoke serialization of objects of these types just by including the corresponding header.
But it seems that including <boost/serialization/array.hpp> is insufficient. What am I missing? (Of course, in practice I'm not doing this with simple ints, but I've simplified greatly to get to the above example, which still fails.) This is my first attempt at using boost serialization, so I expect I've just misunderstood something quite simple. Doc Evans -- Web: http://www.sff.net/people/N7DR
D. R. Evans wrote: I've spent quite a bit of time searching and reading, but I can't understand why the following is happening. Given a simple function: (non-boost headers) . . . #include <boost/archive/binary_oarchive.hpp> #include <boost/serialization/array.hpp> . . . void archive_data(void) { ofstream ofs(context.archive_name()); boost::archive::binary_oarchive ar(ofs); array<int, 10> test; ar << test; } I get: /usr/include/boost/serialization/access.hpp:118:9: error: 'struct std::array<int, 10u>' has no member named 'serialize' ---- The documentation says:
This group of headers includes templates which implement serialization for Standard Library or Boost Library templates. Any program which uses these templates can invoke serialization of objects of these types just by including the corresponding header.
But it seems that including <boost/serialization/array.hpp> is insufficient. What am I missing? (Of course, in practice I'm not doing this with simple ints, but I've simplified greatly to get to the above example, which still fails.) This is my first attempt at using boost serialization, so I expect I've just misunderstood something quite simple. Doc Evans -- Web: http://www.sff.net/people/N7DR
_________________________________
#include <boost/serialization/array.hpp> is designed to work with: ______________
Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
#include <boost/serialization/array.hpp> is designed to permit the following: void archive_data(void) { ofstream ofs(context.archive_name()); boost::archive::binary_oarchive ar(ofs); int test[10] ar << test; } I don't know if anyone has implemented serialization for boost::array or std::array. Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Robert Ramey said the following at 12/29/2012 10:04 PM :
#include <boost/serialization/array.hpp>
is designed to permit the following:
void archive_data(void)
{ ofstream ofs(context.archive_name()); boost::archive::binary_oarchive ar(ofs);
int test[10] ar << test; }
Really??! Sheesh! I wish it had said that in the documentation instead of what it does say:
This group of headers includes templates which implement serialization for Standard Library or Boost Library templates. Any program which uses these templates can invoke serialization of objects of these types just by including the corresponding header.
That sure makes it sound like it's supposed to work with Standard Library arrays... which was why I spent a bunch of time trying to figure out what I was doing wrong before finally coming here. I even looked briefly at the header file, and I didn't see any comment there to the effect of: "this is designed for C-style arrays, not Standard Library array containers".
I don't know if anyone has implemented serialization for boost::array or std::array.
OK; I'll just iterate and serialize the individual components myself. Thank you for taking the trouble to reply; I appreciate it. Doc -- Web: http://www.sff.net/people/N7DR
participants (2)
-
D. R. Evans
-
Robert Ramey