私は自分のアプリケーションで使用boost::variant
しboost::serialize
ています。シリアル化モジュールには、バリアントのシリアル化のサポートが組み込まれているため、次のようになります。
boost::variant<int,double> u(3.14);
// Do something with u;
// Serialize
oa << u;
動作します。ただし、私の問題は、シリアル化が堅牢ではないことです。アプリケーションのコンパイル方法に応じて、バリアントの要素が変わる可能性があります。現在、シリアル化モジュールは、「アクティブな」バリアント型のインデックスを単に埋め込んでいるように見えます。これは、バリアントがたとえばに変更された場合の問題ですboost::variant<double,string>
。
シリアル化されたタイプがのテンプレートパラメータであるようにシリアル化/非シリアル化が機能するように、これを改善する方法を誰かが提案できますかboost::variant
?(したがって、上記の場合、boost::variant<int,double> u(3.14)
シリアル化されていないboost::variant<double,std::string>
可能性があります。これには、型の文字列形式などの追加情報を提供する必要がある場合があることを認識しています。