void load(std::basic_string<CharType> & s) { unsigned int l; load(l); s.resize(l); // note breaking a rule here - could be a problem on some platform if (l) load_impl(const_cast<CharType *>(s.data()), get_mpi_datatype(CharType()),l); }
void load( T & t) { load_impl(&t, get_mpi_datatype(t), 1); }
template<typename T> MPI_Datatype get_mpi_datatype() { return get_mpi_datatype(T());}
void load_array(serialization::array<T> const& x, unsigned int /* file_version */) { if (x.count()) load_impl(x.address(), get_mpi_datatype(*x.address()), x.count()); }
void save_array(serialization::array_wrapper<T> const& x, unsigned int /* file_version */) { if (x.count()) save_impl(x.address(), get_mpi_datatype(*x.address()), x.count()); }