I am sorry for the trouble, I write wrong, I meant vector<const T*>
The asymetry came because I was doing the following :
class X {
vector<const T*> m_v;
template<class Archive>
void save(Archive & ar, const unsigned int version) const {
ar & m_v;
}
template<class Archive>
void load(Archive & ar, const unsigned int version){
void* ptr=&m_v;
vector<T*> *mptr;
mptr=static_cast<vector<T*>*>(ptr);
ar & (*mptr);
}
...
};
elizabeta petreska wrote:I'm curious about this.
> Again thank you all who helped me in this .
>
>>> This is likely a secondary effect from some other error.
> It was secondary error.
>
>>> A complete shot in the dark but it is possible it might be the
>>> problem.
>
> This was the problem, so it wasn't shot in the dark at all.
> The problem was that my classes have the following class members :
> shared_ptr<const T> , vector<const T>, vector<shared_ptr<const T>>
> and many others that have const inside them. I can not remove const
> from these, altghough I wish :)
> I was casting const away (http://tinyurl.com/yae5stv ) for all this
> members only at the point of loading, for example in many cases I was
> saving vector<const T> and loading vector<T>. Now I added const cast
> at the point of saving too, so saving and loading is symmetric. It
> seems it works Ok now, and I hope this is the right way to solve the
> problem.
a) I can't understand why vector<const T> is even valid. My understanding
is that the value of type of a container must be Assignable and that
a const T is by definition not assignable. So I would expect this to
show up as an issue long before serialization is involved.
b) I can't see how one gets the asymetry in the first place. E.G.
class X {
vector<const T> m_v;
template<class Archive>
void save(Archive & ar, const unsigned int version) const {
ar << m_v;
}
template<class Archive>
void load(Archive & ar, const unsigned int version){
ar >> m_v;
}
...
};
Hmmm I suppose that one might use a cast on a load but not on the save.
This is a case which in fact I've never considered. I'll think about this.
Meanwhile, any C++ STL gurus can feel free to comment on a) above.
Robert Ramey
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users