web-dev-qa-db-ja.com

オブジェクトをシリアル化するとき、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);
}

その機能をグーグルで検索しようとしましたが、有用なものは何も見つかりませんでした。の違いは何ですか

 ar & BOOST_SERIALIZATION_NVP(_from_prop)

そして

 ar & _from_prop? 
25
Shawn

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の文字列パラメータで指定された名前です。

38
ybungalobill