#include <iostream>
class TattleTale
{
public:
TattleTale() { std::cout << "TattleTale Constructed" << std::endl; }
~TattleTale() { std::cout << "TattleTale Destructed" << std::endl; }
void Hello() { std::cout << "Hello" << std::endl; }
};
template<typename T>
static T &Singleton()
{
static T instance;
return instance;
}
int main()
{
std::cout << "main started" << std::endl;
std::cout << "Singleton<TattleTale> constructed" << std::endl;
Singleton<TattleTale>().Hello();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgVGF0dGxlVGFsZQp7CnB1YmxpYzoKICAgIFRhdHRsZVRhbGUoKSB7IHN0ZDo6Y291dCA8PCAiVGF0dGxlVGFsZSBDb25zdHJ1Y3RlZCIgPDwgc3RkOjplbmRsOyB9ICAKICAgIH5UYXR0bGVUYWxlKCkgeyBzdGQ6OmNvdXQgPDwgIlRhdHRsZVRhbGUgRGVzdHJ1Y3RlZCIgPDwgc3RkOjplbmRsOyB9ICAKICAgIHZvaWQgSGVsbG8oKSB7IHN0ZDo6Y291dCA8PCAiSGVsbG8iIDw8IHN0ZDo6ZW5kbDsgfSAgCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdGF0aWMgVCAmU2luZ2xldG9uKCkKewogICAgc3RhdGljIFQgaW5zdGFuY2U7CiAgICByZXR1cm4gaW5zdGFuY2U7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8ICJtYWluIHN0YXJ0ZWQiIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiU2luZ2xldG9uPFRhdHRsZVRhbGU+IGNvbnN0cnVjdGVkIiA8PCBzdGQ6OmVuZGw7CiAgICBTaW5nbGV0b248VGF0dGxlVGFsZT4oKS5IZWxsbygpOwogICAgCiAgICByZXR1cm4gMDsKfQ==