// { dg-do compile }
// { dg-options "-fpermissive" }

template<int> int foo()
{
  return ({ foo; }); // { dg-error "insufficient context" }
}

int bar()
{
  return ({ foo; }); // { dg-error "insufficient context" }
}

void bar(int);

typedef void (*bart)(int);

bart barf()
{
  return ({ bar; }); // { dg-error "insufficient context" }
}

bool bark()
{
  return ({ barf; }); // ok, no overload
}

template <typename T>
class C
{
  static int f();
  bool g()
  {
    return ({ f; }); // ok, no overload
  }
  bool g(int)
  {
    return ({ g; }); // { dg-error "insufficient context" }
  }
};
