+template <class T>
+inline Packet& operator<<(Packet& packet, const std::basic_string<T>& value)
+{
+ packet << (uint16_t)value.length();
+ packet.write(value.data(), value.length() * sizeof(T));
+ return packet;
+}
+
+template <class T>
+inline Packet& operator>>(Packet& packet, std::basic_string<T>& value)