Сообщение Re[3]: константа и не константа одновременно(почти) от 08.05.2015 10:09
Изменено 08.05.2015 10:37 niXman
Здравствуйте, sokel, Вы писали:
S>Т.е. один тип аксессора на serialize/deserialize? А не проще пару было сделать const — не const?
S>Тогда бы честный был serialize(Archive &) const и deserialize(Archive&).
YAS поддерживает такие способы сериализации/десериализации:
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 osertype2 {
int a, b;
template<typename Archive>
void serialize(Archive &ar) {
ar & a
& b;
}
};
// 4: separate member function for read/write
struct osertype2 {
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);
}
Re[3]: константа и не константа одновременно(почти)
Здравствуйте, sokel, Вы писали:
S>Т.е. один тип аксессора на serialize/deserialize? А не проще пару было сделать const — не const?
S>Тогда бы честный был serialize(Archive &) const и deserialize(Archive&).
YAS поддерживает такие способы сериализации/десериализации:
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);
}