[Bug c++/87951] GCC warns about reaching end of non-void function when all switch is completely handled

safinaskar at mail dot ru gcc-bugzilla@gcc.gnu.org
Sat Dec 8 17:46:00 GMT 2018


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

Askar Safin <safinaskar at mail dot ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |safinaskar at mail dot ru

--- Comment #7 from Askar Safin <safinaskar at mail dot ru> ---
"g++ -fstrict-enums" doesn't disable warning if I use "enum class" instead of
plain enum.

This is test code:
///
enum class Enum {
  A,
  B,
};

int CoverMyBases(Enum x) {
    switch (x) {
        case Enum::A:
            return 1;
        case Enum::B:
            return 0;
    }
}

int main(int argc, const char **argv) {
    CoverMyBases(Enum::A);
    CoverMyBases(Enum::B);
    return 0;
}
///
This is command line:
g++ -fstrict-enums a.cpp
This is gcc version: gcc version 8.2.0 (Debian 8.2.0-10)
And I get this:
a.cpp: In function ‘int CoverMyBases(Enum)’:
a.cpp:13:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^


More information about the Gcc-bugs mailing list