How can I serialize a class (with boost::serialization
) that contains a boost::optional
?
I.e. the following code will give an error when instantiated.
error C2039: 'serialize' : is not a member of 'boost::optional' C:\boost\boost_1_55_0\boost\serialization\access.hpp 118
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class MyClass {
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & my_member;
}
boost::optional<int> my_member;
};
int main() {
std::ofstream ofs("filename.txt");
const MyClass g;
boost::archive::text_oarchive oa(ofs);
oa << g;
return 0;
}
I understand there's probably a deeper question involved (what should you write to the file when the value is not present?), but there must be some standard solution for it. I am looking for the most simple way to solve this.
optional
as well. – Eardrop