// { dg-do compile }
// { dg-options "-O2 -std=c++11 -Werror=uninitialized" }
int rand ();
class Funcs
{
public:
    int *f1 ();
    int *f2 ();
};
typedef decltype (&Funcs::f1) pfunc;
static int Set (Funcs * f, const pfunc & fp)
{
  (f->*fp) ();
  return 0;
}
void
Foo ()
{
  pfunc fp = &Funcs::f1;
  if (rand ())
    fp = &Funcs::f2;
  Set (0, fp);
}