[Serialization][Variant] serialization of variant containing boost::blank

Hi, In the following code I show how a boost::variant that has a boost::blank cannot be serialized, and a proposed fix. I argue that this should work out of the box. This is with Boost 1.42.0. Am I doing something wrong here, or is serialization of boost::blank somewhere already? Thanks #include <boost/variant/variant.hpp> #include <boost/serialization/variant.hpp> #include <boost/archive/text_oarchive.hpp> #include <sstream> #ifdef FIX // suggested fix: non-intrusive serialize() for boost::blank namespace boost { namespace serialization { template<class Archive> void serialize(Archive &, boost::blank &, const unsigned int) { // Nothing to do here } } } #endif int main() { boost::variant<int, double> v1 = 666; boost::variant<boost::blank, int, double> v2 = 666; std::ostringstream os; boost::archive::text_oarchive oa(os); // works! oa << v1; // compile error about boost::blank not having a serialize method // #define FIX to compile oa << v2; return 0; }
participants (1)
-
dariomt@gmail.com