Por lo que yo entiendo, no hay serialización (boost::serialization
, en realidad) soporte para boost::any
marcador de posición.C++ - boost :: cualquier serialización
¿Alguien sabe si hay una forma de serializar una entidad personalizada boost::any
?
El problema aquí es obvio: boost::any
utiliza marcadores de posición basados en plantillas para almacenar objetos y typeid
para verificar si boost::any_cast
es apropiado.
Por lo tanto, hay una costumbre abstractos clases derivadas basadas en plantillas superclase placeholder
y costumbre, que se crean de la siguiente manera:
template <T> custom_placeholder : public placeholder {
virtual std::type_info type() const { return typeid(T); }
virtual ...
};
Obviamente, esto trae algunos problemas cuando ni siquiera pensar en la serialización de estas cosas. Quizás alguien sepa algún truco para hacer ese tipo de serialización (y, por supuesto, deserialización adecuada)?
Gracias
Un tipo especializado para un conjunto conocido de tipos se denominaría una variante, como p. Ej. ['boost :: variant'] (http://www.boost.org/doc/libs/1_44_0/doc/html/variant.html) (que obviamente solo da la base). –
@Georg: Sí, gracias por la pista. Edité la respuesta para reflejar eso. –