34template<
typename T, std::
size_t SIZE>
37 for (T &value : data) {
51template<
typename T, std::
size_t SIZE>
54 for (
const T &value : data) {
75 stream.
read(
reinterpret_cast<char *
>(&size),
sizeof(size));
78 for (T &value : data) {
98 std::size_t size = data.size();
99 stream.
write(
reinterpret_cast<const char *
>(&size),
sizeof(size));
101 for (
const T &value : data) {
115template<
typename T1,
typename T2>
122 data = std::make_pair(std::move(first), std::move(second));
134template<
typename T1,
typename T2>
137 stream << data.first;
138 stream << data.second;
153template<
typename K,
typename T>
157 stream.
read(
reinterpret_cast<char *
>(&size),
sizeof(size));
161 for (std::size_t i = 0; i < size; ++i) {
166 data[key] = std::move(value);
182template<
typename K,
typename T>
185 std::size_t size = data.size();
186 stream.
write(
reinterpret_cast<const char *
>(&size),
sizeof(size));
188 for (
const auto &entry : data) {
189 stream << entry.first;
190 stream << entry.second;
206template<
typename K,
typename T>
210 stream.
read(
reinterpret_cast<char *
>(&size),
sizeof(size));
213 for (std::size_t i = 0; i < size; ++i) {
218 data[key] = std::move(value);
234template<
typename K,
typename T>
237 std::size_t size = data.size();
238 stream.
write(
reinterpret_cast<const char *
>(&size),
sizeof(size));
240 for (
const auto &entry : data) {
241 stream << entry.first;
242 stream << entry.second;
262 stream.
read(
reinterpret_cast<char *
>(&size),
sizeof(size));
266 for (std::size_t i = 0; i < size; ++i) {
269 data.insert(std::move(value));
288 std::size_t size = data.size();
289 stream.
write(
reinterpret_cast<const char *
>(&size),
sizeof(size));
291 for (
const auto &value : data) {
308 stream.
read(
reinterpret_cast<char *
>(&data),
sizeof(T));
323 stream.
write(
reinterpret_cast<const char *
>(&data),
sizeof(T));
void read(char *data, std::size_t size)
void write(const char *data, std::size_t size)