Cómo des / serializar un mapa con clase de plantilla usando boost :: multiprecision :: mpq_rational
Tengo la siguiente clase de plantilla:
#include <map>
#include <boost/array.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/multiprecision/gmp.hpp>
template <class T>
class A {
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & a;
}
public:
T a;
};
que uso para crear un mapa
map<A<boost::array<int,2> >, int> mmm;
Puedo usar los archivos de encabezado proporcionados por boost para serializar / deserializar este código usando:
ifstream ifs("filename");
boost::archive::text_iarchive iarch(ifs);
boost::serialization::load<boost::archive::text_iarchive,int,A<boost::array<int,2> > >(iarch,mmm,1);
Pregunta: me gustaría usarboost::multiprecision::mpq_rational
en lugar deint
dentro de la matriz. Sin embargo, recibo un error largo con la queja principal de que gmp_backend no tiene un método de serialización:
....
/usr/local/include/boost/serialization/access.hpp:118:9: error: ‘struct boost::multiprecision::backends::gmp_rational’ has no member named ‘serialize’
t.serialize(ar, file_version);
^
¿Existe una solución fácil usando boost / serialization / map.hpp con mpq_rational? Gracias,