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 )
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;
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_ MapItem< KeyType, ValueType > make_map_item(KeyType &&key, ValueType &&value)
Create a MapItem so that human readable archives will group keys and values together.
Definition: helpers.hpp:323
uint64_t size_type
The size type used by cereal.
Definition: helpers.hpp:59
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