Добро пожаловать в SO !!
Вот пример, показывающий, как его использовать.
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/serialization/binary_object.hpp>
#include <boost/serialization/serialization.hpp>
#include <iostream>
#include <sstream>
using boost::serialization::make_binary_object;
enum class Example : uint8_t {
A = 1,
B = 2,
};
int main() {
std::stringstream stream;
boost::archive::binary_oarchive ar(stream, boost::archive::no_header);
auto data = Example::A;
ar << make_binary_object(&data, sizeof(data));
std::cout << "Size: " << stream.str().size() << "\n";
}
Если вы хотите сохранить двоичный объект в файл, вот пример, которыйсохранит его в файле с именем data.dat
#include <fstream>
using boost::serialization::make_binary_object;
enum class Example : uint8_t {
A = 1,
B = 2,
};
int main() {
std::ofstream f("data.dat", std::ofstream::binary);
boost::archive::binary_oarchive ar(f, boost::archive::no_header);
auto data = Example::A;
ar << make_binary_object(&data, sizeof(data));
}
После запуска кода файл будет выглядеть примерно так
Из ускорениякомментарии к исходному коду, опубликованные @ StoryTeller
make_binary_object (), является лишь небольшим помощником для поддержки соглашения о том, что все упаковщики сериализации следуют соглашению об именах make_xxxxx