#include <iostream>
struct A
{
A(int v=1): m(v) {}
int m;
};
struct B
{
B(): m(2) {}
int m;
};
struct C
{
C()
{
m = 3;
}
int m;
};
struct D
{
int m = 11;
};
int main()
{
using namespace std;
#define TRACE(arg) cout << #arg ": " << arg.m << endl;
A a1;
TRACE(a1)
A a2(4);
TRACE(a2)
B b;
TRACE(b)
b.m = 5;
TRACE(b)
C c;
TRACE(c)
c.m = 6;
TRACE(c)
D d;
TRACE(d)
d.m = 0;
TRACE(d)
#undef TRACE
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgCnsgCiAgICBBKGludCB2PTEpOiBtKHYpIHt9CiAgICBpbnQgbTsgCn07CgpzdHJ1Y3QgQgp7IAogICAgQigpOiBtKDIpIHt9CiAgICBpbnQgbTsgCn07CgpzdHJ1Y3QgQwp7IAogICAgQygpCiAgICB7CiAgICAgICAgbSA9IDM7CiAgICB9CiAgICBpbnQgbTsgCn07CgpzdHJ1Y3QgRAp7IAogICAgaW50IG0gPSAxMTsgCn07CgppbnQgbWFpbigpCnsKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAjZGVmaW5lIFRSQUNFKGFyZykgY291dCA8PCAjYXJnICI6ICIgPDwgYXJnLm0gPDwgZW5kbDsgCiAgICBBIGExOwogICAgVFJBQ0UoYTEpCiAgICBBIGEyKDQpOyAKICAgIFRSQUNFKGEyKQogICAgQiBiOwogICAgVFJBQ0UoYikKICAgIGIubSA9IDU7CiAgICBUUkFDRShiKQogICAgQyBjOwogICAgVFJBQ0UoYykKICAgIGMubSA9IDY7CiAgICBUUkFDRShjKQogICAgRCBkOwogICAgVFJBQ0UoZCkKICAgIGQubSA9IDA7CiAgICBUUkFDRShkKQogICAgI3VuZGVmIFRSQUNFCn0K