I know from the doc that the way to deal with non default constuctors for deserialization is the load_construct_data function. However, I'm in a case where the parameters of the non default constructor are not serializable, but can be provided at runtime. How can I pass those values to load_construct_data ? One example to be clearer: class Data { public: Data(Mutex &m) : myMutex (m) {} private: friend class boost::serialization::access; Mutex &myMutex; // Mutex is intrinsically a non serializable info template<class Archive> void serialize(Archive &ar, const unsigned int file_version){ } }; int main() { vector<Data> v; Mutex mutexForData = createMutex(); std::ifstream ifs("filename", std::ios::binary); boost::archive::text_iarchive ia(ifs); ia >> v; // I'd like Data in the vector to use my mutexForData mutex }