Разбираюсь с boost serialization. Странная проблема получается
Архив xml.
Есть объект (А), в котором древовидная структура других объектов (В). В объектах В иммется weak_ptr на объект А. В объекте А ссылка на root-объект В.
Сериализуем объект А. Все нормально.
Потом десериализуем в уже созданный объект А. Десериализуется нормально, при выходе из restore_A вызывается деструктор объекта "а".
void restore_A(A &a, const char * filename)
{
std::ifstream ifs(filename);
assert(ifs.good());
boost::archive::xml_iarchive iar(ifs);
// restore the schedule from the archive
iar >> BOOST_SERIALIZATION_NVP(a);
}
Заменил weak_ptr в объектах В на обычный pointer, все нормально стало...