The second form of the
return statement provides the function’s result. Every return in a function with a return type other than
void must return a value. The value returned must have the same type as the function return type, or it must have a type that can be implicitly converted (§ 4.11, p. 159) to that type.
Although C++ cannot guarantee the correctness of a result, it can guarantee that every
return includes a result of the appropriate type. Although it cannot do so in all cases, the compiler attempts to ensure that functions that return a value are exited only through a valid
return statement. For example: ...