Здравствуйте, k732, Вы писали:
K>1. Зачем реализацию выносить в отдельный файл
В принципе не обязательно, я просто переделал исходные бустовские файлы, а у них разнесено по разным файлам (правда там обобщенная имплементация save/load collection)
K>2. Меня смущает временный контейнер в методе save_queue. Ведь семантика queue подразумевает уничтожение объекта при доступе к нему. Полезно ли это или все-таки при сериализации нужно разрушать прочитанные данные ?
В общем случае void save_queue(Archive & ar,
const Container &s) тоже самое что и void save_collection(Archive & ar,
const Container &s) в бусте, подразумевается, что при сериализации контейнер не модифицируется.
А так все зависит от твоих требований к очереди, например
1. При остановке обработки ты должен сериализовать очередь, а при старте прочитать и обработать. В этом случае можно(но
не обязательно), разрушать очередь.
2. Либо серилизовать данные в процессе обработки, например отсылать их для другим модулям для нотификации об изменений данных, тогда не надо разрушать.
3. что-нить еще