title: Correct syntax to store function pointer
body: <p>Surprisingly, the following code compiles well both in gcc and clang no matter what symbol before function name is used: <code>*</code>, <code>&amp;</code> or nothing. Does standard allow any of them? What is preferred way to store function pointers? </p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  typedef int foo(int a);
  
  template &lt;typename X&gt;
  int g(int y) {
      return y * sizeof(X);
  }
  
  int main() {
  
      foo* xxx;
  
      // 1. what is correct according to standard?
      // 2. why they all work?
      xxx = *g&lt;float&gt;;
      xxx = &amp;g&lt;float&gt;;
      xxx = g&lt;float&gt;;
  
      printf("ok %d\n", xxx(5));
  }
  </code></pre>