#include <iostream>
#include <string>
using namespace std;
int g_tab = 1;
struct X {
int tab;
const char* name;
X(const char* name) : name(name), tab(g_tab++) {
cout << string(tab, '\t') << name << " : ctor" << endl;
}
~X() {
cout << string(tab, '\t') << name << " : dtor" << endl; }
};
struct Y {
Y() {
static X s2("s2");
}
};
Y y;
X g1("g1");
X g2("g2");
int main() {
cout << "start!" << endl;
static X s1("s1");
cout << "finish!" << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGdfdGFiID0gMTsKc3RydWN0IFggewoJaW50IHRhYjsKCWNvbnN0IGNoYXIqIG5hbWU7CglYKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZShuYW1lKSwgdGFiKGdfdGFiKyspIHsKCQljb3V0IDw8IHN0cmluZyh0YWIsICdcdCcpIDw8IG5hbWUgPDwgIiA6IGN0b3IiIDw8IGVuZGw7Cgl9Cgl+WCgpIHsKCQljb3V0IDw8IHN0cmluZyh0YWIsICdcdCcpIDw8IG5hbWUgPDwgIiA6IGR0b3IiIDw8IGVuZGw7IH0KfTsKCnN0cnVjdCBZIHsKCVkoKSB7CgkJc3RhdGljIFggczIoInMyIik7Cgl9Cn07CgpZIHk7CgpYIGcxKCJnMSIpOwpYIGcyKCJnMiIpOwoKCmludCBtYWluKCkgewoJY291dCA8PCAic3RhcnQhIiA8PCBlbmRsOwoJc3RhdGljIFggczEoInMxIik7Cgljb3V0IDw8ICJmaW5pc2ghIiA8PCBlbmRsOwp9Cg==