IDL: silence narrowing conversion in bool serializer

bool serializers are now aliases to int8_t serializers, but gcc 9
complains about narrowing conversions, due to the path int8_t -> int -> bool.

A bad narrowing conversion here cannot happen in practice, but massage
the code a little to silence it.
This commit is contained in:
Avi Kivity
2019-05-07 09:28:24 +03:00
parent d7cbd3dc61
commit 17c268cd55

View File

@@ -199,7 +199,21 @@ struct integral_serializer {
}
};
template<> struct serializer<bool> : public integral_serializer<int8_t> {};
template<> struct serializer<bool> {
template <typename Input>
static bool read(Input& i) {
return deserialize_integral<uint8_t>(i);
}
template< typename Output>
static void write(Output& out, bool v) {
serialize_integral(out, uint8_t(v));
}
template <typename Input>
static void skip(Input& i) {
read(i);
}
};
template<> struct serializer<int8_t> : public integral_serializer<int8_t> {};
template<> struct serializer<uint8_t> : public integral_serializer<uint8_t> {};
template<> struct serializer<int16_t> : public integral_serializer<int16_t> {};