Основываясь на моем незнании сериализации, существует три способа разрешить сериализацию типа:
- Он сериализуется тривиально (с использованием функций, предоставляемых зерновыми, таких как int, std::string, std::vector и т. д.)
- Путем предоставления функции-члена сериализации.
Предлагая комбинацию функций-членов сохранения и загрузки.
Код: Выделить всё
template
concept Serialize_Binary = requires(T a) {
{ a.serialize(std::declval()) };
};
template
concept Save_Binary = requires(T a) {
{ a.save(std::declval()) };
};
template
concept Load_Binary = requires(T a) {
{ a.load(std::declval()) };
};
template
concept Serializable =
Serialize_Binary || (Save_Binary && Load_Binary);
Код: Выделить всё
static_assert(Serializable,"vector is not serializable");
Некоторые предыдущие вопросы, которые я изучал:
Использование Cereal для сериализации шаблонных полиморфных типов в библиотеке
Cereal Добавить сериализацию в существующий класс библиотеки
Сериализация Cereal std::vector
Подробнее здесь: https://stackoverflow.com/questions/786 ... able-types
Мобильная версия