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

Sha*_*awn 24 c++ serialization boost

我正在使用boost.serialization.一些示例代码在serialize方法中使用BOOST_SERIALIZATION_NVP:

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

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

 ar & BOOST_SERIALIZATION_NVP(_from_prop)
Run Code Online (Sandbox Code Playgroud)

 ar & _from_prop? 
Run Code Online (Sandbox Code Playgroud)

ybu*_*ill 37

BOOST_SERIALIZATION_NVP 是一个宏(在您的示例中)扩展为:

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

make_nvp 是一个包装器,其作用与直接序列化相同

    ar & _from_prop;
Run Code Online (Sandbox Code Playgroud)

除了序列化到XML存档时.XML归档文件需要一些名称才能用于XML标记.此名称是字符串参数中指定的名称make_nvp.