diff options
Diffstat (limited to 'lib/events/single_key_value.h')
-rw-r--r-- | lib/events/single_key_value.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/events/single_key_value.h b/lib/events/single_key_value.h index 75ca8cd2..ca2bd331 100644 --- a/lib/events/single_key_value.h +++ b/lib/events/single_key_value.h @@ -5,13 +5,22 @@ namespace Quotient { namespace EventContent { - template <typename T, const QLatin1String* KeyStr> + template <typename T, const QLatin1String& KeyStr> struct SingleKeyValue { + // NOLINTBEGIN(google-explicit-constructor): that check should learn + // about explicit(false) + QUO_IMPLICIT SingleKeyValue(const T& v = {}) + : value { v } + {} + QUO_IMPLICIT SingleKeyValue(T&& v) + : value { std::move(v) } + {} + // NOLINTEND(google-explicit-constructor) T value; }; } // namespace EventContent -template <typename ValueT, const QLatin1String* KeyStr> +template <typename ValueT, const QLatin1String& KeyStr> struct JsonConverter<EventContent::SingleKeyValue<ValueT, KeyStr>> { using content_type = EventContent::SingleKeyValue<ValueT, KeyStr>; static content_type load(const QJsonValue& jv) @@ -22,6 +31,6 @@ struct JsonConverter<EventContent::SingleKeyValue<ValueT, KeyStr>> { { return { { JsonKey, toJson(c.value) } }; } - static inline const auto JsonKey = toSnakeCase(*KeyStr); + static inline const auto JsonKey = toSnakeCase(KeyStr); }; } // namespace Quotient |