Da quando ho capito molti anni fa che questo non produce un errore di default (almeno in GCC), mi sono sempre chiesto perché?
Comprendo che è possibile emettere flag di compilatore per generare un avviso, ma non dovrebbe sempre essere un errore? Perché ha senso che una funzione non nulla non restituisca un valore valido?
Un esempio come richiesto nei commenti:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... compila.
-Werror=return-typetratterà solo quell'avvertimento come un errore. Ho appena ignorato l'avvertimento e il paio di minuti di frustrazione rintracciare un invalidothis puntatore mi portano qui e fino a questa conclusione.
std::optional funzione senza tornare restituisce un "vero" optional