Desde que percebi, há muitos anos, que isso não produz um erro por padrão (pelo menos no GCC), sempre me perguntei por que?
Entendo que você pode emitir sinalizadores de compilador para gerar um aviso, mas isso não deveria sempre ser um erro? Por que faz sentido que uma função não nula não retorne um valor para ser válida?
Um exemplo conforme solicitado nos comentários:
#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-typetratará exatamente esse aviso como um erro. Eu apenas ignorei o aviso e os dois minutos de frustração ao localizar um thisponteiro inválido me levaram até aqui e a esta conclusão.
std::optionalfunção sem retornar retorna uma opção "verdadeira"