З тих пір, як я багато років тому зрозумів, що це не створює помилок за замовчуванням (принаймні в GCC), я завжди цікавився чому?
Я розумію, що ви можете видавати прапори компілятора для створення попередження, але чи не завжди це має бути помилка? Чому має значення недійсна функція, що не повертає значення, що має значення?
Приклад, як вимагають у коментарях:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... компілює.
-Werror=return-type
трактуватиме саме це попередження як помилку. Я просто проігнорував попередження, і кілька хвилин розчарування відстеження недійсного this
вказівника привели мене сюди і до цього висновку.
std::optional
функції без повернення повертає "справжню" необов'язковість