https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93968
Bug ID: 93968
Summary: -Wswitch-default on exhaustive enum class gives
warning
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gcc at cookiesoft dot de
Target Milestone: ---
```
enum class A { X, Y, Z };
int foo(A a) {
switch (a) {
case A::X: return 1;
case A::Y: return 2;
case A::Z: return 3;
}
}
```
`g++ -Wswitch-default input.cpp`
```
<source>: In function 'int foo(A)':
<source>:4:12: warning: switch missing default case [-Wswitch-default]
4 | switch (a) {
| ^
```
The switch is exhaustive and so there should no warning for a default case, but
when compiling it with `-Wswitch-default` it does emit a warning. Clang does
not.
This happens on every version of gcc.
Godbolt: https://cpp.godbolt.org/z/Goii_K