Я пытаюсь использовать стандартные средства сериализации с boost, но мне не удалось сериализовать сложный вектор. Я попробовал это:
#include <fstream>
#include <complex>
#include <vector>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/complex.hpp>
using namespace std;
typedef complex<double> type;
template<class Archive>
void serialize(Archive& ar, vector<type>& objs, const unsigned version) {
ar & objs;
}
int main(){
vector<type> r;
r.push_back(1.3);
r.push_back(12.12);
r.push_back(-31.05);
ofstream ofs("test.txt");
boost::archive::text_oarchive oa(ofs);
oa & r;
return 0;
}
который компилируется нормально, но вылетает при выполнении. Тем не менее, если я сделаю
typedef double type
тогда все работает ок. Я не могу найти решение для этого. Любая помощь?
Спасибо,
январь
Просто, чтобы подвести итоги и отметить как ответ:
Похоже, проблема в реализации Boost 1.54 для Visual Studio 2012, так как сообщается, что версия кода на g ++ работает правильно. Спасибо @ DieterLücking за тестирование моего кода и указание в правильном направлении.
LOL — вместо того, чтобы сказать:
Похоже, проблема в реализации Boost 1.54 для Visual Studio 2012, так как сообщается, что версия кода на g ++ работает правильно.
Я бы сказал:
Проблема, по-видимому, связана с Visual Studio 2012, поскольку сообщается, что версия кода на g ++ работает правильно.
Рберт Рами