Здравствуйте, sokel, Вы писали:
S>Т.е. один тип аксессора на serialize/deserialize? А не проще пару было сделать const — не const?
S>Тогда бы честный был serialize(Archive &) const и deserialize(Archive&).
YAS поддерживает такие способы сериализации/десериализации:
yas::mem_ostream os;
yas::binary_oarchive<yas::mem_ostream> oa(os);
struct usertype {};
usertype u;
// 1: one free function for read/write
template<typename Archive>
void serialize(Archive &ar, usertype &v) {
ar & v;
}
// 2: separate free functions
template<typename Archive>
void serialize(Archive &ar, const usertype &v) { // write
ar & v;
}
template<typename Archive>
void serialize(Archive &ar, usertype &v) { // read
ar & v;
}
// 3: one member function for read/write
struct usertype2 {
int a, b;
template<typename Archive>
void serialize(Archive &ar) {
ar & a
& b;
}
};
// 4: separate member function for read/write
struct usertype3 {
int a, b;
template<typename Archive>
void serialize(Archive &ar) const { // write
ar & a
& b;
}
template<typename Archive>
void serialize(Archive &ar) { // read
ar & a
& b;
}
};
// ну и такое недавно добавил по просьбам пользователей:
int a, b;
ar(a, b); // operator(...)
ar.serialize(a, b);
}
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)