Исходя из моего понимания сериализации, существует три способа разрешить сериализацию типа:
- Это тривиально сериализуемый (с использованием функций, предоставляемых зерновыми, таких как int, std::string, std::vector и т. д.). Документ, содержащий все поддерживаемые типы: https://uscilab.github.io/cereal/assets ... pport.html
- путем предоставления функции-члена сериализации.< /li>
Предлагая комбинацию функций-членов сохранения и загрузки.
Код: Выделить всё
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