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 или как-то так
Обсуждают сегодня