#include <iostream>
class StaticClassData {
int *pointer, value;
public:
StaticClassData(): pointer(&value) {}
void add(int i) {
std::cout << "Hello, this is " << this << std::endl;
value = i;
std::cout << "I'm fine" << std::endl;
*pointer = i;
std::cout << "You never read this text" << std::endl;
}
};
class SomeClass {
struct StaticConstructor {
StaticConstructor() : storage(new StaticClassData){ storage->add(1); }
StaticClassData* const storage;
};
static StaticConstructor constructor;
// static StaticClassData storage;
};
//StaticClassData SomeClass::storage;
SomeClass::StaticConstructor SomeClass::constructor;
int main(){}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgU3RhdGljQ2xhc3NEYXRhIHsKICBpbnQgKnBvaW50ZXIsIHZhbHVlOwoKcHVibGljOgogIFN0YXRpY0NsYXNzRGF0YSgpOiBwb2ludGVyKCZ2YWx1ZSkge30KICAKICB2b2lkIGFkZChpbnQgaSkgewogICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgdGhpcyBpcyAiIDw8IHRoaXMgPDwgc3RkOjplbmRsOwogICAgdmFsdWUgPSBpOwogICAgc3RkOjpjb3V0IDw8ICJJJ20gZmluZSIgPDwgc3RkOjplbmRsOwogICAgKnBvaW50ZXIgPSBpOwogICAgc3RkOjpjb3V0IDw8ICJZb3UgbmV2ZXIgcmVhZCB0aGlzIHRleHQiIDw8IHN0ZDo6ZW5kbDsKICB9Cn07CgpjbGFzcyBTb21lQ2xhc3MgewogIHN0cnVjdCBTdGF0aWNDb25zdHJ1Y3RvciB7CiAgICBTdGF0aWNDb25zdHJ1Y3RvcigpIDogc3RvcmFnZShuZXcgU3RhdGljQ2xhc3NEYXRhKXsgc3RvcmFnZS0+YWRkKDEpOyB9CiAgICBTdGF0aWNDbGFzc0RhdGEqIGNvbnN0IHN0b3JhZ2U7CiAgfTsKICAKICBzdGF0aWMgU3RhdGljQ29uc3RydWN0b3IgY29uc3RydWN0b3I7CiAvLyBzdGF0aWMgU3RhdGljQ2xhc3NEYXRhIHN0b3JhZ2U7Cn07CgovL1N0YXRpY0NsYXNzRGF0YSBTb21lQ2xhc3M6OnN0b3JhZ2U7ClNvbWVDbGFzczo6U3RhdGljQ29uc3RydWN0b3IgU29tZUNsYXNzOjpjb25zdHJ1Y3RvcjsKCmludCBtYWluKCl7fQ==