Оказывается, что компилятор g ++ (используемый в Qt Creator по умолчанию) выдает простое предупреждение, если у вас нет оператора return в функции non-void, то есть:
int* create_array(int n)
{
int* a = new int[n];
}
компилируется нормально.
Это поведение подвержено бесчисленным сообщениям об ошибках на самом g ++, но похоже, что разработчики считают, что это поведение соответствует стандарту C ++ (который является дискуссионным, поскольку в этой части это немного запутанно), как указано в http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43943:
Flowing off the end of a function is equivalent to a return with no value;
this results in undefined behavior in a value-returning function.
Однако, тот же самый абзац начинается с:
A return statement without an expression can be used only in functions
that do not return a value, that is, a function with the return type void,
a constructor (12.1), or a destructor (12.4).
Так что кроме этих (не) священных войн за стандартную интерпретацию есть какие-либо варианты сделать флаг Qtэто как ошибка во время компиляции?