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;
}