Sejak saya menyadari beberapa tahun yang lalu, bahwa ini tidak menghasilkan kesalahan secara default (setidaknya di GCC), saya selalu bertanya-tanya mengapa?
Saya mengerti bahwa Anda dapat mengeluarkan flag compiler untuk menghasilkan peringatan, tetapi bukankah itu selalu menjadi kesalahan? Mengapa masuk akal jika fungsi non-void tidak mengembalikan nilai yang valid?
Contoh seperti yang diminta dalam komentar:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... mengkompilasi.
-Werror=return-typeakan memperlakukan peringatan itu hanya sebagai kesalahan. Saya hanya mengabaikan peringatan dan beberapa menit frustrasi melacak thispointer yang tidak valid membawa saya ke sini dan sampai pada kesimpulan ini.
std::optionalfungsi tanpa mengembalikan mengembalikan opsional "benar"