From 5c7a6cba8c7e81f6fe0172da2ca4bdc04c30786a Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 15 May 2022 21:03:20 +0200 Subject: [PATCH] Add default operator== to serializable classes Otherwise derived classes cannot use add a default themselves. Maybe this makes sense for more comparision operators. Note that I'm still testing the usefulness. It already breaks when using multiple inheritane so maybe there is a better way. The operator is guarded by a version constraint because it is a C++20 feature. --- lib/binary/serializable.h | 4 ++++ lib/json/serializable.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/binary/serializable.h b/lib/binary/serializable.h index e5f564d..a2f0922 100644 --- a/lib/binary/serializable.h +++ b/lib/binary/serializable.h @@ -27,6 +27,10 @@ template struct BinarySerializable { static constexpr const char *qualifiedName = "ReflectiveRapidJSON::BinarySerializable"; static constexpr auto version = v; + +#if __cplusplus > 201707L + bool operator==(const BinarySerializable &) const = default; +#endif }; template inline void BinarySerializable::toBinary(std::ostream &outputStream, BinaryVersion version) const diff --git a/lib/json/serializable.h b/lib/json/serializable.h index 66aa1d9..26497a6 100644 --- a/lib/json/serializable.h +++ b/lib/json/serializable.h @@ -31,6 +31,10 @@ template struct JsonSerializable { static Type fromJson(const std::string &json, JsonDeserializationErrors *errors = nullptr); static constexpr const char *qualifiedName = "ReflectiveRapidJSON::JsonSerializable"; + +#if __cplusplus > 201707L + bool operator==(const JsonSerializable &) const = default; +#endif }; /*!