30 #ifndef CEREAL_TYPES_UNORDERED_MAP_HPP_
31 #define CEREAL_TYPES_UNORDERED_MAP_HPP_
34 #include <unordered_map>
38 namespace unordered_map_detail
41 template <
class Archive,
class MapT>
inline
42 void save( Archive & ar, MapT
const & map )
44 ar( make_size_tag( static_cast<size_type>(map.size()) ) );
46 for(
const auto & i : map )
47 ar( make_map_item(i.first, i.second) );
51 template <
class Archive,
class MapT>
inline
52 void load( Archive & ar, MapT & map )
55 ar( make_size_tag( size ) );
58 map.reserve( static_cast<std::size_t>( size ) );
60 for( size_type i = 0; i < size; ++i )
62 typename MapT::key_type key;
63 typename MapT::mapped_type value;
65 ar( make_map_item(key, value) );
66 map.emplace( std::move( key ), std::move( value ) );
72 template <
class Archive,
class K,
class T,
class H,
class KE,
class A>
inline
75 unordered_map_detail::save( ar, unordered_map );
79 template <
class Archive,
class K,
class T,
class H,
class KE,
class A>
inline
82 unordered_map_detail::load( ar, unordered_map );
86 template <
class Archive,
class K,
class T,
class H,
class KE,
class A>
inline
89 unordered_map_detail::save( ar, unordered_multimap );
93 template <
class Archive,
class K,
class T,
class H,
class KE,
class A>
inline
96 unordered_map_detail::load( ar, unordered_multimap );
100 #endif // CEREAL_TYPES_UNORDERED_MAP_HPP_
Definition: access.hpp:39
Main cereal functionality.
#define CEREAL_LOAD_FUNCTION_NAME
The deserialization (load) function name to search for.
Definition: macros.hpp:58
#define CEREAL_SAVE_FUNCTION_NAME
The serialization (save) function name to search for.
Definition: macros.hpp:65