//! @internal template <class Archive, class MapT> inline void load( Archive & ar, MapT & map ) { size_type size; ar( make_size_tag( size ) ); map.clear(); map.reserve( size ); for( size_type i = 0; i < size; ++i ) { typename MapT::key_type key; typename MapT::mapped_type value; ar( make_map_item(key, value) ); map.insert( {key, value} ); } }
//! @internal template <class Archive, class MapT> inline void load( Archive & ar, MapT & map ) { size_type size; ar( make_size_tag( size ) ); map.clear(); auto hint = map.begin(); for( size_t i = 0; i < size; ++i ) { typename MapT::key_type key; typename MapT::mapped_type value; ar( make_map_item(key, value) ); hint = map.emplace_hint( hint, std::move( key ), std::move( value ) ); } }
//! @internal template <class Archive, class MapT> inline void load( Archive & ar, MapT & map ) { size_type size; ar( make_size_tag( size ) ); map.clear(); auto hint = map.begin(); for( size_t i = 0; i < size; ++i ) { typename MapT::key_type key; typename MapT::mapped_type value; ar( make_map_item(key, value) ); #ifdef CEREAL_OLDER_GCC hint = map.insert( hint, std::make_pair(std::move(key), std::move(value)) ); #else // NOT CEREAL_OLDER_GCC hint = map.emplace_hint( hint, std::move( key ), std::move( value ) ); #endif // NOT CEREAL_OLDER_GCC } }