int Ac = 0, Ad = 0;

struct A
{
  A( bool b )
    : b ( b )
  { Ac++; }

  operator bool() { return b; }

  ~A() { Ad++; }

  bool b;
};

int main()
{
  int i = 0;
  while (A a = (i < 2))
  {
    if (Ac != (Ad + 1)) return 1;
    i++;
  }
  if (!(Ac == 3 && Ad == 3)) return 1;
  int a = 0;

  return 0;
}
