6.6.3 The return statement [stmt.return]
1 A function returns to its caller by the return statement.
2 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). A return statement with an
expression of non-void type can be used only in functions returning a value; the value of the expression is
returned to the caller of the function. The expression is implicitly converted to the return type of the function
in which it appears. A return statement can involve the construction and copy of a temporary object
(12.2). 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.
Я так понимаю, что это освобождает компилятор от признания программы как ill-formed.
Re: почему пустая функция компилируется без ошибок?
U> warning: no return statement in function returning non-void
U>Почему программа не ill-formed? Какой от нее прок? U>В 8.4 почти ничего не написано про function definition.
Из этого же разряда: wrning: Not all control pathes return value (за точность не ручаюсь)
Лучше сраз поднимать до Error'ов. Делать или не делать Treat warnings as errors дело хозяйское. Но подобный код недопустим.
Re: почему пустая функция компилируется без ошибок?