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-type
akan memperlakukan peringatan itu hanya sebagai kesalahan. Saya hanya mengabaikan peringatan dan beberapa menit frustrasi melacak this
pointer yang tidak valid membawa saya ke sini dan sampai pada kesimpulan ini.
std::optional
fungsi tanpa mengembalikan mengembalikan opsional "benar"