Рассмотрим код, подобный следующему:
enum class Foo
{
A, B
};
int deliverPizza(Foo foo)
{
switch (foo) {
case Foo::A:
return 0;
case Foo::B:
return 1;
}
}
int main()
{
return deliverPizza(Foo::A);
}
Скомпилировано с $ g++ -o main main.cpp -Wreturn-type
:
main.cpp: In function ‘int deliverPizza(Foo)’:
main.cpp:14:1: warning: control reaches end of non-void function [-Wreturn-type]
Почему это так? Насколько я вижу, все случаи обрабатываются внутри коммутатора. Неужели GCC не понимает, что дела возвращаются?