title: C++11 initializer with ambiguous function id-expression?
body: <p>In the following C++11 code:</p>
  
  <pre><code>void f(int) {}
  void f(double) {}
  
  void (*p)(int) = f;
  </code></pre>
  
  <p>There are two functions.</p>
  
  <p>The third <code>f</code> identifier is an id-expression and the initializer of <code>p</code>.</p>
  
  <p>In 5.1.1p8 [expr.prim.general]/8 it says:</p>
  
  <blockquote>
    <p>The type of the [id-expression] is the type of the identifier.
    The result is the entity denoted by the identifier. The result is an lvalue if the entity is a function, variable, or data member and a prvalue otherwise.</p>
  </blockquote>
  
  <p>Given that <code>f</code> could be referring to two different entities with two different types, there is no "the entity" or "the type".</p>
  
  <p>Is there some other text in the standard that addresses this situation?</p>
  
  <p>Do implementations just disambiguate this as an extension or is it required somewhere?  (Without some other text one could argue that an implementation could reject the f id-expression as ambiguous.)</p>