Что делает BOOST_SERIALIZATION_NVP при сериализации объекта? - PullRequest
24 голосов
/ 16 декабря 2011

Я использую 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? 

1 Ответ

37 голосов
/ 16 декабря 2011

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.

...