// { dg-do run  }
// GROUPS passed groff
/* This should compile properly with the new overloading scheme.  */

extern "C" int printf (const char *, ...);
extern "C" void exit (int);

int win = 0;

class symbol
{
public:
  symbol(const char *p, int how = 0) {}
  symbol() {}
};

class dictionary
{
public:
  void lookup(symbol s, void *v=0) { win = 1; }
  void lookup(const char *) {}
};

int main()
{
  char buf[2048];
  dictionary exceptions;
  unsigned char *tem = new unsigned char[19 + 1];

  exceptions.lookup (symbol (buf), tem);

  printf (win ? "PASS\n" : "FAIL\n");
  exit (! win);
}
