https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53479

--- Comment #15 from Eric Gallager <egall at gwmail dot gwu.edu> ---
(In reply to Jonathan Wakely from comment #11)
> (In reply to Eric Gallager from comment #6)
> > This should probably depend on the -fstrict-enums flag, as that controls
> > whether enums can have any value or just those values that are enumerated.
> 
> No, that's not what it does.
> 
> It tells the compiler the enum will only be one of the values of the
> enumeration, which is not the same as the values corresponding to
> enumerators.
>


That's a confusing distinction; they sound like the same thing at first to
someone like me who doesn't speak standards-ese...


> 
> As I said in comment 3, the OP's type has the values of int, because it has
> an underlying type of int.
> 
> Given enum E { E1 = 1, E3 = 3 } the values of the type are 0, 1, 2 and 3 and
> -fstrict-enums tells the compiler it will never have a value outside that
> range. It does **not** tell it that the type will never have the value 0 or
> 2.


Thanks, that example helps clear things up. Could it be added to the
documentation for -fstrict-enums?

Reply via email to