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,

Respuestas a la pregunta(1)

Su respuesta a la pregunta