Boost logo

Boost :

Subject: [boost] [graph_parallel] property_serialize.hpp
From: Peter Dimov (lists_at_[hidden])
Date: 2018-10-06 20:59:43


I'm looking at boost/pending/property_serialize.hpp, with the intent of
moving it from Graph Parallel to Graph as it's included from a Graph header,
and I see this:

https://github.com/boostorg/graph_parallel/blob/develop/include/boost/pending/property_serialize.hpp#L65

#ifdef BOOST_GRAPH_USE_MPI
namespace boost { namespace mpi {
    template<>
    struct is_mpi_datatype<boost::no_property> : mpl::true_ { };

} } // end namespace boost::mpi

BOOST_IS_BITWISE_SERIALIZABLE(boost::no_property)
BOOST_CLASS_IMPLEMENTATION(boost::no_property,object_serializable)
BOOST_CLASS_TRACKING(boost::no_property,track_never)
#endif // BOOST_GRAPH_USE_MPI

What this does is, when BOOST_GRAPH_MPI is defined, it sets certain
serialization properties for boost::no_property (is bitwise serializable,
use object level versioning, never track address), but when BOOST_GRAPH_MPI
is not defined, it doesn't.

That is, the serialization format of boost::no_property changes on the basis
of whether BOOST_GRAPH_MPI is defined. (It's the same for boost::property<>,
above in the same file.)

This does not seem correct to me. I would expect these serialization
properties to be applied consistently regardless of whether MPI is used or
not.

But fixing this could conceivably break existing code that serializes and
deserializes non-parallel graphs and relies on a certain format on disk.

So... should we fix this or not?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk