OK, so it looks like posting from nabble loses the raw-tag stuff...
The optional.hpp comment:
// It is an inherent limitation to the serialization of optional.hpp
// that the underlying type must be either a pointer or must have a
// default constructor. It's possible that this could change sometime
// in the future, but for now, one will have to work around it. This
can
// be done by serialization the optional<T> as optional
BOOST_STATIC_ASSERT(
boost::serialization::detail::is_default_constructible<T>::value
|| boost::is_pointer<T>::value
);
The code snippet:
#include
#include
#include
#include
#include <fstream>
int main(int argc, char *argv[])
{
(void)argc; (void)argv;
typedef boost::archive::text_oarchive oarchive_type;
typedef boost::archive::text_iarchive iarchive_type;
std::ios_base::openmode flags = std::ios_base::openmode();
{
std::ofstream ofs("/tmp/tmp.bin", std::ios::out | flags);
boost::optionalstd::string s = std::string("hello");
oarchive_type oa(ofs);
oa << s;
}
{
std::ifstream ifs("/tmp/tmp.bin", std::ios::in | flags);
boost::optionalstd::string s;
iarchive_type ia(ifs); // # ERROR #
ia >> s;
}
}
--
Sent from: http://boost.2283326.n4.nabble.com/Boost-Users-f2553780.html