|
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:
#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