Ошибка Boost.Serialize для вектора & lt; complex & gt;

Я пытаюсь использовать стандартные средства сериализации с 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

тогда все работает ок. Я не могу найти решение для этого. Любая помощь?

Спасибо,

январь

1

Решение

Просто, чтобы подвести итоги и отметить как ответ:

Похоже, проблема в реализации Boost 1.54 для Visual Studio 2012, так как сообщается, что версия кода на g ++ работает правильно. Спасибо @ DieterLücking за тестирование моего кода и указание в правильном направлении.

0

Другие решения

LOL — вместо того, чтобы сказать:

Похоже, проблема в реализации Boost 1.54 для Visual Studio 2012, так как сообщается, что версия кода на g ++ работает правильно.

Я бы сказал:

Проблема, по-видимому, связана с Visual Studio 2012, поскольку сообщается, что версия кода на g ++ работает правильно.

Рберт Рами

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector