2011-12-16 13 views
19

estoy usando boost.serialization. algunos ejemplos de código BOOST_SERIALIZATION_NVP uso en el método serialize:¿Qué hacer cuando la serialización BOOST_SERIALIZATION_NVP objeto?

template<class Archive> 
void save(Archive & ar, const unsigned int version) const 
{ 
    ar & BOOST_SERIALIZATION_NVP(_from_prop); 
} 

me trató de google su funcionalidad, pero nada útil se encuentra. ¿cuál es el diff entre

ar & BOOST_SERIALIZATION_NVP(_from_prop) 

y

ar & _from_prop? 

Respuesta

31

BOOST_SERIALIZATION_NVP es una macro que se expande (en su ejemplo) a:

template<class Archive> 
void save(Archive & ar, const unsigned int version) const 
{ 
    ar & boost::serialization::make_nvp("_from_prop", _from_prop) 
} 

make_nvp es una envoltura que actúa igual que serializar directamente como por

ar & _from_prop; 

excepto cuando la serialización en un archivo XML. Un archivo XML necesita algún nombre para ser utilizado para la etiqueta XML. Este nombre es el nombre especificado en el parámetro de cadena de make_nvp.

Cuestiones relacionadas