#include <iostream>
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; }
};
X g1("g1");
thread_local X t1("t1");
thread_local X t2("t2");
X g2("g2");
int main() {
cout << "start!" << endl;
static X s1("s1");
cout << "test " << t1.name << endl;
static X s2("s2");
cout << "finish!" << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGdfdGFiID0gMTsKc3RydWN0IFggewoJaW50IHRhYjsKCWNvbnN0IGNoYXIqIG5hbWU7CglYKGNvbnN0IGNoYXIqIG5hbWUpIDogbmFtZShuYW1lKSwgdGFiKGdfdGFiKyspIHsKCQljb3V0IDw8IHN0cmluZyh0YWIsICdcdCcpIDw8IG5hbWUgPDwgIiA6IGN0b3IiIDw8IGVuZGw7Cgl9Cgl+WCgpIHsKCQljb3V0IDw8IHN0cmluZyh0YWIsICdcdCcpIDw8IG5hbWUgPDwgIiA6IGR0b3IiIDw8IGVuZGw7IH0KfTsKClggZzEoImcxIik7CnRocmVhZF9sb2NhbCBYIHQxKCJ0MSIpOwp0aHJlYWRfbG9jYWwgWCB0MigidDIiKTsKWCBnMigiZzIiKTsKCmludCBtYWluKCkgewoJY291dCA8PCAic3RhcnQhIiA8PCBlbmRsOwoJc3RhdGljIFggczEoInMxIik7Cgljb3V0IDw8ICJ0ZXN0ICIgPDwgdDEubmFtZSA8PCBlbmRsOwoJc3RhdGljIFggczIoInMyIik7Cgljb3V0IDw8ICJmaW5pc2ghIiA8PCBlbmRsOwp9Cg==