#include <iostream>
#include <list>
using namespace std;
class MyList: public list<void*>
{
public:
MyList()
{
cout << "class MyList init"<< endl;
}
void f(){ cout<<"in MyList::f()"<<endl;}
};
template<class _T>
class Trash
{
public:
static MyList m_trash;
public:
Trash()
{
cout << "class Trash init" << endl;
}
static void Init()
{
cout << "Trash init data" << endl;
//m_trash.push_back(NULL); //error
m_trash.f(); //ok
}
static MyList& GetTrash() { return m_trash; }
};
template<class _T>
MyList Trash<_T>::m_trash;
class Conf
{
public:
Conf()
{
cout << "class Conf Init" << endl;
Trash<void*>::Init();
}
~Conf()
{
cout << "class Conf Del" << endl;
}
};
static Conf g_conf;
///////////////////////
int main(int argc, char* argv[])
{
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE15TGlzdDogcHVibGljIGxpc3Q8dm9pZCo+CnsKcHVibGljOgpNeUxpc3QoKQp7ICAKICAgIGNvdXQgPDwgImNsYXNzIE15TGlzdCBpbml0Ijw8IGVuZGw7Cn0Kdm9pZCBmKCl7IGNvdXQ8PCJpbiBNeUxpc3Q6OmYoKSI8PGVuZGw7fQp9OwoKdGVtcGxhdGU8Y2xhc3MgX1Q+CmNsYXNzIFRyYXNoCnsKcHVibGljOgpzdGF0aWMgTXlMaXN0IG1fdHJhc2g7CnB1YmxpYzoKVHJhc2goKQp7CiAgICBjb3V0IDw8ICJjbGFzcyBUcmFzaCBpbml0IiA8PCBlbmRsOwp9CgpzdGF0aWMgdm9pZCBJbml0KCkKewogICAgY291dCA8PCAiVHJhc2ggaW5pdCBkYXRhIiA8PCBlbmRsOwogICAgLy9tX3RyYXNoLnB1c2hfYmFjayhOVUxMKTsgICAgICAgIC8vZXJyb3IKICAgIG1fdHJhc2guZigpOyAgICAgICAgICAgICAgICAgICAgICAvL29rCn0Kc3RhdGljIE15TGlzdCYgR2V0VHJhc2goKSB7IHJldHVybiBtX3RyYXNoOyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBfVD4KTXlMaXN0IFRyYXNoPF9UPjo6bV90cmFzaDsKCmNsYXNzIENvbmYKewpwdWJsaWM6CkNvbmYoKQp7CiAgICBjb3V0IDw8ICJjbGFzcyBDb25mIEluaXQiIDw8IGVuZGw7CiAgIAogICAgVHJhc2g8dm9pZCo+OjpJbml0KCk7ICAgICAKfQoKfkNvbmYoKQp7CiAgICBjb3V0IDw8ICJjbGFzcyBDb25mIERlbCIgPDwgZW5kbDsKfQp9OwoKc3RhdGljIENvbmYgZ19jb25mOyAgCgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewpyZXR1cm4gMDsKfQ==