27 #ifndef CEREAL_TYPES_UNORDERED_SET_HPP_
28 #define CEREAL_TYPES_UNORDERED_SET_HPP_
30 #include <cereal/cereal.hpp>
31 #include <unordered_set>
35 namespace unordered_set_detail
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 ) );
55 for(
size_t i = 0; i < size; ++i )
57 typename SetT::key_type key;
66 template <
class Archive,
class K,
class H,
class KE,
class A>
inline
67 void save( Archive & ar, std::unordered_set<K, H, KE, A>
const & unordered_set )
69 unordered_set_detail::save( ar, unordered_set );
73 template <
class Archive,
class K,
class H,
class KE,
class A>
inline
74 void load( Archive & ar, std::unordered_set<K, H, KE, A> & unordered_set )
76 unordered_set_detail::load( ar, unordered_set );
80 template <
class Archive,
class K,
class H,
class KE,
class A>
inline
81 void save( Archive & ar, std::unordered_multiset<K, H, KE, A>
const & unordered_multiset )
83 unordered_set_detail::save( ar, unordered_multiset );
87 template <
class Archive,
class K,
class H,
class KE,
class A>
inline
88 void load( Archive & ar, std::unordered_multiset<K, H, KE, A> & unordered_multiset )
90 unordered_set_detail::load( ar, unordered_multiset );
94 #endif // CEREAL_TYPES_UNORDERED_SET_HPP_