|
Boost : |
From: Persson Jonas (Jonas.Persson_at_[hidden])
Date: 2002-02-28 09:31:47
> -----Original Message-----
> From: Peter Dimov [mailto:pdimov_at_[hidden]]
> Sent: Thursday, February 28, 2002 2:57 PM
> To: boost_at_[hidden]
> Subject: Re: [boost] Re: Serialization (Persistence) library draft
> submission
>
>
> From: "Persson Jonas" <Jonas.Persson_at_[hidden]>
> > Serialization with a default constructor requirement would be almost
> > useless.
>
> I find your arguments sound in general but this statement is untrue.
It would mean that if I would add serialization to my project I would need
go
through all my classes and add a defult constructor and also remove const
qualifiers
of the data members I need to save the state of. And then add contracts
and/or
error handling to ensure proper use (wich was previously guaranteed by
construction)
A lot of unnessessary work that would reduce the robustness of my program.
It would
at least make me think twice before I added it.
> > What would be needed is a deserialization constructor and a
> way to get the
> > next serialized object witout using operator >>
>
> You can't add a serialization constructor to builtins, enums,
> std:: classes,
> and third party classes.
True, but would I need to? They already has default construction.
but maybe we should use a trait to select a proper implementation
of get
template<typename T>
T get(::boost::iarchive &ar) {
T t;
ar >> t;
return t;
}
for default constructibel and:
template<typename T>
T get(::boost::iarchive &ar) {
return T(ar);
}
for deserialize constructible.
/ Jonas
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk