Search code examples
c++returnlanguage-lawyervoid

Can I use a return statement in a function returning void?


I have to return to the previous level of the recursion. is the syntax like below right?

void f()
{
   // some code here
   //
   return;
}

Solution

  • Yes, you can return from a void function.

    Interestingly, you can also return void from a void function. For example:

    void foo()
    {
      return void();
    }
    

    As expected, this is the same as a plain return;. It may seem esoteric, but the reason is for template consistency:

    template<class T>
    T default_value()
    {
      return T();
    }
    

    Here, default_value returns a default-constructed object of type T, and because of the ability to return void, it works even when T = void.