Ticket #10740: vector.hpp

File vector.hpp, 1.3 KB (added by Simon Etter <ettersi@…>, 8 years ago)

Partial fix.

Line 
1#include <vector>
2#include <boost/serialization/split_free.hpp>
3#include <boost/serialization/nvp.hpp>
4#include <boost/serialization/detail/stack_constructor.hpp>
5
6namespace boost {
7namespace serialization {
8
9 template<class Archive, typename T>
10 inline void save(
11 Archive & ar,
12 const std::vector<T>& l,
13 unsigned int version
14 ) {
15 typename std::vector<T>::size_type count = l.size();
16 ar << BOOST_SERIALIZATION_NVP(count);
17 for (const auto& v : l) ar << boost::serialization::make_nvp("item", v);
18 }
19
20 template<class Archive, typename T>
21 inline void load(
22 Archive & ar,
23 std::vector<T>& l,
24 unsigned int version
25 ) {
26 l.clear();
27 typename std::vector<T>::size_type count;
28 ar >> BOOST_SERIALIZATION_NVP(count);
29 while (count-- > 0) {
30 detail::stack_construct<Archive, T> t(ar, version);
31 ar >> boost::serialization::make_nvp("item", t.reference());
32 l.emplace_back(std::move(t.reference()));
33 ar.reset_object_address(&l.back(), &t.reference());
34 }
35 }
36
37 template<class Archive, typename T>
38 inline void serialize(
39 Archive & ar,
40 std::vector<T>& l,
41 unsigned int version
42 ) {
43 split_free(ar, l, version);
44 }
45
46} // namespace serialization
47} // namespace boost
48