Boost logo

Boost Users :

Subject: Re: [Boost-users] Serializing containers of movable but noncopyabletypes
From: Robert Ramey (ramey_at_[hidden])
Date: 2013-07-01 12:21:40


Daniel Mitchell wrote:
> While attempting to serialize a std::vector<T>, where T is a movable
> but noncopyable type, I was getting blown up by the call to
> s.push_back() on line 65 of collections_load_imp.hpp (Boost 1.53.0).
>
> In my local copy of that header I changed s.push_back(t.reference())
> to s.push_back(std::move(t.reference())). Is this a safe change? Is
> there a better way to handle this case?

Hmmm -

When I look at the type requirements for the vector class:

http://www.sgi.com/tech/stl/Vector.html
http://www.sgi.com/tech/stl/Sequence.html
http://www.sgi.com/tech/stl/Container.html
http://www.sgi.com/tech/stl/Assignable.html

I see that items in vectors must be assignable and that assignable means
"copyable".

I realize that this information might now be out of date, but since I use
the
weakest common denominator of type requirements to diminish portability
problems, that's what I use.

I'm sure someone might have something more useful to add here.

Robert Ramey


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net