27 #ifndef CEREAL_TYPES_SET_HPP_
28 #define CEREAL_TYPES_SET_HPP_
30 #include <cereal/cereal.hpp>
37 template <
class Archive,
class SetT>
inline
38 void save( Archive & ar, SetT
const &
set )
40 ar( make_size_tag(
set.size() ) );
42 for(
const auto & i :
set )
46 template <
class Archive,
class SetT>
inline
47 void load( Archive & ar, SetT &
set )
50 ar( make_size_tag( size ) );
54 auto hint =
set.begin();
55 for(
size_t i = 0; i < size; ++i )
57 typename SetT::key_type key;
60 hint =
set.insert(hint, key );
66 template <
class Archive,
class K,
class C,
class A>
inline
67 void save( Archive & ar, std::set<K, C, A>
const &
set )
69 set_detail::save( ar,
set );
73 template <
class Archive,
class K,
class C,
class A>
inline
74 void load( Archive & ar, std::set<K, C, A> &
set )
76 set_detail::load( ar,
set );
80 template <
class Archive,
class K,
class C,
class A>
inline
81 void save( Archive & ar, std::multiset<K, C, A>
const & multiset )
83 set_detail::save( ar, multiset );
87 template <
class Archive,
class K,
class C,
class A>
inline
88 void load( Archive & ar, std::multiset<K, C, A> & multiset )
90 set_detail::load( ar, multiset );
94 #endif // CEREAL_TYPES_SET_HPP_