Is returning void valid code?
Solution 1:
It's a language feature of C++
C++ (ISO 14882:2003) 6.6.3/3
A return statement with an expression of type “cv void” can be used only in functions with a return type of cv void; the expression is evaluated just before the function returns to its caller.
C (ISO 9899:1999) 6.8.6.4/1
A return statement with an expression shall not appear in a function whose return type is void.
Solution 2:
Yes, it is valid code. This is necessary when you have template functions so that you can use uniform code. For example,
template<typename T, typename P>
T f(int x, P y)
{
return g(x, y);
}
Now, g
might be overloaded to return void when the second argument is some particular type. If "returning void" were invalid, the call to f
would then break.