https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68336
Stephan Beyer <s-beyer at gmx dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |s-beyer at gmx dot net --- Comment #3 from Stephan Beyer <s-beyer at gmx dot net> --- Hi, these false-positives still occur in g++ 6.3.0 I am mentioning this because I want to add another test case: $ cat foo.cc enum class Test { first, second }; int return_warning(Test foo) { switch (foo) { case Test::first: return 23; case Test::second: return 42; } } $ g++-6 -std=c++11 -Wreturn-type -c foo.cc foo.cc: In function ‘int return_warning(Test)’: foo.cc:13:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ $ g++-6 --version g++-6 (Debian 6.3.0-2) 6.3.0 20161229 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This is directly related to #60725. Note the difference that an "enum class" is used here instead of an unscoped "enum". I however do not think that this actually makes a difference in C++. ("enum Test foo = 3" is valid in C but not in C++, right?) Regards Stephan