diff --git a/src/protobuf/protobufscalarjsonserializers_p.h b/src/protobuf/protobufscalarjsonserializers_p.h index 2951c1e5..08cf0941 100644 --- a/src/protobuf/protobufscalarjsonserializers_p.h +++ b/src/protobuf/protobufscalarjsonserializers_p.h @@ -173,22 +173,19 @@ T deserialize(const QJsonValue &value, bool &ok) // For types that "smaller" than qint64 we need to check if the value fits its limits range if constexpr (sizeof(T) != sizeof(qint64)) { - if (ok) { + constexpr auto Limits = []() { if constexpr (std::is_same_v - || std::is_same_v) { - using limits = std::numeric_limits; - ok = raw >= limits::min() && raw <= limits::max(); - } else if constexpr (std::is_same_v) { - using limits = std::numeric_limits; - ok = raw >= limits::min() && raw <= limits::max(); - } else { - using limits = std::numeric_limits; - ok = raw >= limits::min() && raw <= limits::max(); - } - } + || std::is_same_v) + return std::numeric_limits{}; + else if constexpr (std::is_same_v) + return std::numeric_limits{}; + else + return std::numeric_limits{}; + }(); + ok = ok && (raw >= Limits.min() && raw <= Limits.max()); } - return T(raw); + return ok ? T(raw) : T{}; } template = true>