// PRMS Id: 5921
// Build don't link:
// Bug: default arguments containing constructor calls persist incorrectly.

class foo
{
 public:
  foo();
  foo(int x);
 public:
  int iamamember;
};

class bar
{
 public:
  bar();
  int memberfunction(int i, char *j, double k, foo foo1 = foo(0));
};

int
pain(bar *bar1)
{
  return bar1->memberfunction(1, "x", 0.0);
}

int
pain2(bar *bar1)
{
  return bar1->memberfunction(1, "x", 0.0);
}
