[PATCH 2/9] Use unsigned as base type for some enums
Tom Tromey
tom@tromey.com
Wed Aug 29 00:01:00 GMT 2018
>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:
>>>>> "Simon" == Simon Marchi <simon.marchi@ericsson.com> writes:
Simon> Doing a static assert like this:
Simon> + gdb_static_assert (std::is_unsigned<underlying_type>::value);
Simon> would enforce it at compile time, which is preferable than finding it at
Simon> runtime.
Tom> I made this change.
This change turns out to be a bit too eager. It requires changing all
the enums that are used by DEF_ENUM_FLAGS_TYPE; including
gcc_qualifiers, which is maintained in gcc (and theoretically at least
is C compatible) -- but operator~ is never actually used with these
other enums, so there isn't any UB to avoid.
However, moving the static assert to operator~ seems to work.
Tom
More information about the Gdb-patches
mailing list