#include <stdio.h>
template<typename T>
class singleton {
static T* g_pInstance;
public:
static T* getInstance() {
return g_pInstance;
}
singleton() {
g_pInstance = (T*)this;
}
~singleton() {
if(g_pInstance == this) g_pInstance = nullptr;
}
};
template<typename T>
T* singleton<T>::g_pInstance = nullptr;
class Any : public singleton<Any> { /* Done */ };
int main() {
printf("0x%x\n", Any::getInstance());
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpjbGFzcyBzaW5nbGV0b24gewogIHN0YXRpYyBUKiBnX3BJbnN0YW5jZTsKcHVibGljOgogIHN0YXRpYyBUKiBnZXRJbnN0YW5jZSgpIHsKICAJcmV0dXJuIGdfcEluc3RhbmNlOwogIH0KICBzaW5nbGV0b24oKSB7CiAgCWdfcEluc3RhbmNlID0gKFQqKXRoaXM7CiAgfQogIH5zaW5nbGV0b24oKSB7CiAgCWlmKGdfcEluc3RhbmNlID09IHRoaXMpIGdfcEluc3RhbmNlID0gbnVsbHB0cjsKICB9Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpUKiBzaW5nbGV0b248VD46OmdfcEluc3RhbmNlID0gbnVsbHB0cjsKCmNsYXNzIEFueSA6IHB1YmxpYyBzaW5nbGV0b248QW55PiB7IC8qIERvbmUgKi8gfTsKCmludCBtYWluKCkgewogIHByaW50ZigiMHgleFxuIiwgQW55OjpnZXRJbnN0YW5jZSgpKTsKICByZXR1cm4gMDsKfQo=