title: Returning function pointer type
body: <p>Often I find the need to write functions which return function pointers. Whenever I do, the basic format I use is:</p>
  
  <pre><code>typedef int (*function_type)(int,int);
  
  function_type getFunc()
  {
     function_type test;
     test /* = ...*/;
     return test;
  }
  </code></pre>
  
  <p>However this can get cumbersome when dealing with a large number of functions so I would like to not have to declare a typedef for each one (or for each class of functions)</p>
  
  <p>I can remove the typedef and declare the local variable returned in the function as:
  <code>int (*test)(int a, int b);</code> making the function body look like this:</p>
  
  <pre><code>{
       int (*test)(int a, int b);
       test /* = ...*/;
       return test;
  }
  </code></pre>
  
  <p>but then I do not know what to set for the return type of the function.
  I have tried:</p>
  
  <pre><code>int(*)(int,int) getFunc()
  {
      int (*test)(int a, int b);
      test /* = ...*/;
      return test;
  }
  </code></pre>
  
  <p>but that reports a syntax error. How do I declare the return type for such a function without declaring a typedef for the function pointer. Is it even possible? Also note that I am aware that it seems like it would be cleaner to declare typedefs, for each of the functions, however, I am very careful to structure my code to be as clean and easy to follow as possible. The reason I would like to eliminate the typedefs is that they are often only used to declare the retrieval functions and therefore seem redundant in the code.</p>