diff --git a/rx/include/rx/Serializer.hpp b/rx/include/rx/Serializer.hpp index 4f7fcbb72..7e8ccec09 100644 --- a/rx/include/rx/Serializer.hpp +++ b/rx/include/rx/Serializer.hpp @@ -68,6 +68,7 @@ void callDeserializeFunction(Deserializer &s, T &value) } template + requires(!std::is_array_v) T callDeserializeFunction(Deserializer &s) requires requires(T &value) { deserialize(s); } { @@ -257,7 +258,19 @@ private: bool mFailure = false; }; -template struct TypeSerializer { +template + requires std::is_array_v +struct TypeSerializer { + static void serialize(Serializer &s, const T &t) { + std::byte rawBytes[sizeof(T)]; + std::memcpy(rawBytes, &t, sizeof(T)); + s.write(rawBytes); + } +}; + +template + requires(!std::is_array_v) +struct TypeSerializer { static void serialize(Serializer &s, const T &t) { std::byte rawBytes[sizeof(T)]; std::memcpy(rawBytes, &t, sizeof(T));