Попробуйте скомпилировать с опцией -Wall
(gcc) [-Wreturn-type
, чтобы быть более точным].Вы получите предупреждение типа «Управление достигает конца функции, не являющейся пустым», или что-то вроде «нет оператора возврата в функции, возвращающей не пустоту»
Пример:
C:\Users\SUPER USER\Desktop>type no_return.cpp
#include <iostream>
int func(){}
int main()
{
int z = func();
std::cout<< z; //Undefined Behaviour
}
C:\Users\SUPER USER\Desktop>g++ -Wall no_return.cpp
no_return.cpp: In function 'int func()':
no_return.cpp:2:12: warning: no return statement in function returning non-void
C:\Users\SUPER USER\Desktop>
Использование возвращенного значения не пустой функции (без оператора return) является неопределенным поведением.