@@ -609,6 +609,28 @@ namespace msgpackcpp
609609 }
610610 }
611611
612+ template <
613+ class Source ,
614+ class K ,
615+ class V ,
616+ class Compare = std::less<K>,
617+ class Alloc = std::allocator<std::pair<const K, V>>
618+ >
619+ inline void deserialize (Source& in, std::map<K,V,Compare,Alloc>& map)
620+ {
621+ uint32_t size{};
622+ deserialize_map_size (in, size);
623+
624+ for (uint32_t i = 0 ; i < size ; ++i)
625+ {
626+ K key{};
627+ V val{};
628+ deserialize (in, key);
629+ deserialize (in, val);
630+ map.emplace (std::make_pair (key, val));
631+ }
632+ }
633+
612634 template <
613635 class Stream ,
614636 class K ,
@@ -628,6 +650,33 @@ namespace msgpackcpp
628650 }
629651 }
630652
653+ template <
654+ class Source ,
655+ class K ,
656+ class V ,
657+ class Hash = std::hash<K>,
658+ class KeyEqual = std::equal_to<K>,
659+ class Alloc = std::allocator<std::pair<const K, V>>
660+ >
661+ inline void deserialize (Source& in, std::unordered_map<K,V,Hash,KeyEqual,Alloc>& map)
662+ {
663+ uint32_t size{};
664+ deserialize_map_size (in, size);
665+
666+ for (uint32_t i = 0 ; i < size ; ++i)
667+ {
668+ K key{};
669+ V val{};
670+ deserialize (in, key);
671+ deserialize (in, val);
672+ map.emplace (std::make_pair (key, val));
673+ }
674+ }
675+
676+ // ///////////////////////////////////////////////////////////////////////////////
677+ // / Helpers
678+ // ///////////////////////////////////////////////////////////////////////////////
679+
631680 template <class Stream , class ... Args>
632681 inline void serialize_all (Stream& out, Args&&... args)
633682 {
0 commit comments