: 
int f(double);
int f(int);
int (*pfd)(double) = &f;        int (*pfi)(int) = &f;           int (*pfe)(...) = &f;           int (&rfi)(int) = f;            int (&rfd)(double) = f;         void g() {
  (int (*)(int))&f;             }The initialization of
pfe
is ill-formed because no
f()
with type
int(...)
has been declared, and not because of any ambiguity
.  For another example,
struct X {
  int f(int);
  static int f(long);
};
int (X::*p1)(int)  = &X::f;     int    (*p2)(int)  = &X::f;     int    (*p3)(long) = &X::f;     int (X::*p4)(long) = &X::f;     int (X::*p5)(int)  = &(X::f);                                   int    (*p6)(long) = &(X::f);    —
 end example