A return
with no value may be used only in a function that has a return type of void
. Functions that return void
are not required to contain a return
. In a void
function, an implicit return
takes place after the function’s last statement.
Typically, void
functions use a return
to exit the function at an intermediate point. This use of return
is analogous to the use of a break
statement (§ 5.5.1, p. 190) to exit a loop. For example, we can write a swap
function that does no work if the values are identical:
void swap(int &v1, int &v2)
{
// if the values are already the same, no need to swap, just return
if (v1 == v2)
return;
// if we're here, there's work to do
int tmp = v2;
v2 = v1;
v1 = tmp;
// no explicit return necessary
}
This function first checks if the values are equal and, if so, exits the function. If the values are unequal, the function swaps them. An implicit return occurs after the last assignment statement.
A function with a void
return type may use the second form of the return
statement only to return the result of calling another function that returns void
. Returning any other expression from a void
function is a compile-time error.