/* { dg-do compile } */

struct A
{
  int i, j;

  A() : i(), j() {}
  ~A() {}

  operator int() { return 0; }
};

struct B
{
  A foo() const { return A(); }
};

struct X { ~X(); };

struct C
{
  C();

  int z[4];
};

C::C()
{
  for (int i=0; i<4; ++i)
    z[i]=0;

  X x;

  for (int i=0; i<4; ++i)
    int j = B().foo();
}

