This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/53479] Control flow analysis reports warnings in switch over an enum class even if all possible values have their branches


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?

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]