bool result = false;
// do something, write to result
return result;
}
bool bar() {
foo(); // <-- забыли return
}
В msvs2013 оно честно говорит об ошибке компиляции.
А вот g++ 6.3.0 успешно компилирует этот код.
Почему такое может быть?
UB http://eel.is/c++draft/stmt.return#4.sentence-2
Значит в MSVC предупреждения как ошибки включено.
gcc -Wall
странно, у меня g++ даже без флагов выдаёт warning https://i.imgur.com/6iVjhNn.png
Потому что это UB
Версия гцц какая? У ОП 6.3, там без флага не выдаёт этот ворнинг. Он появился по дефолту в версии 8.1
-Wnoreturn или как-то так
Обсуждают сегодня