https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83280
Bug ID: 83280
Summary: gcc doesn't realize a returning value from complete
switch(enum...) does return a value
Product: gcc
Version: 7.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: [email protected]
Target Milestone: ---
Given this file:
===========
enum class e { a, b, c};
int converter (e val);
int converter (e val) {
switch (val) {
case e::a: return 0;
case e::b: return 1;
case e::c: return 2;
}
}
===========
g++ 7.2 doesn't realize this function always returns correctly:
$ g++-7 -Wswitch -Wreturn-type -std=c++11 -c enum-problem.cc
enum-problem.cc: In function 'int converter(e)':
enum-problem.cc:13:1: warning: control reaches end of non-void function
[-Wreturn-type]
}
^
$