\
template <class K,class _Pr,class _Alloc> \
{ \
out << std::string(#CONTAINER) << TTypeName<K>::get(); \
out << static_cast<uint32_t>(obj.size()); \
out << *it; \
return out; \
} \
\
template <class K,class _Pr,class _Alloc> \
{ \
obj.clear(); \
std::string pref,stored_K; \
in >> pref; \
if (pref!=#CONTAINER)
THROW_EXCEPTION(
format(
"Error: serialized container %s<%s>'s preamble is wrong: '%s'",#CONTAINER, TTypeName<K>::get().c_str(),pref.c_str())) \
in >> stored_K; \
if (stored_K != TTypeName<K>::get())
THROW_EXCEPTION(
format("Error: serialized container %s key type %s != %s",
#CONTAINER,stored_K.c_str(), TTypeName<K>::get().c_str())) \
uint32_t n; \
in >> n; \
for (uint32_t i=0;i<n;i++) \
{ \
K key_obj; \
in >> key_obj; \
obj.insert(key_obj); \
} \
return in; \
}