Подтвердить что ты не робот

Что делает BOOST_SERIALIZATION_NVP при сериализации объекта?

Я использую boost.serialization. некоторый пример кода использует BOOST_SERIALIZATION_NVP в методе сериализации:

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

Я пытался использовать его функции Google, но ничего полезного не найдено. в чем разница между

 ar & BOOST_SERIALIZATION_NVP(_from_prop)

и

 ar & _from_prop? 
4b9b3361

Ответ 1

BOOST_SERIALIZATION_NVP - это макрос, который расширяется (в вашем примере) до:

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

make_nvp - это оболочка, которая действует так же, как сериализация, как и

    ar & _from_prop;

за исключением случаев, когда сериализация в XML-архив. Для XML-архива требуется определенное имя для тега XML. Это имя - это имя, указанное в параметре строки make_nvp.