序列化对象时BOOST_SERIALIZATION_NVP会做什么?

时间:2011-12-16 09:45:47

标签: c++ serialization boost

我正在使用boost.serialization。一些示例代码在序列化方法中使用BOOST_SERIALIZATION_NVP:

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

我试图谷歌它的功能但没有找到任何有用的东西。什么是

之间的差异
 ar & BOOST_SERIALIZATION_NVP(_from_prop)

 ar & _from_prop? 

1 个答案:

答案 0 :(得分:36)

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的字符串参数中指定的名称。