Есть много преимуществ для boost.serialization. Например, как вы говорите, просто включение метода с указанной сигнатурой позволяет платформе сериализовать и десериализовать ваши данные. Кроме того, boost.serialization включает в себя сериализаторы и считыватели для всех стандартных контейнеров STL, поэтому вам не нужно беспокоиться о том, все ли ключи были сохранены (будут) или как определить последнюю запись в карте при десериализации (это будет определяется автоматически).
Однако есть некоторые соображения. Например, если у вас есть поле в вашем классе, которое оно рассчитывает или использует для ускорения, например, индексы или хеш-таблицы, вам не нужно хранить их, , но вы должны взять с учетом того, что вы должны восстановить эти структуры по данным, считанным с диска.
Что касается "формата файла", который вы упоминаете, я думаю, что иногда мы пытаемся сосредоточиться на формате, а не на данных. Я имею в виду, точный формат файла не имеет значения, если вы можете без проблем извлекать данные, используя, скажем, boost.serialization. Если вы хотите поделиться файлом с другими утилитами, которые не используют сериализацию, это другое дело. Но только для (де) сериализации вам не нужно заботиться о внутреннем формате файла.