#include <iostream>
using namespace std;
typedef void (*F)();
template<F f> struct Goal
{
Goal() { f(); }
};
template<F f> struct Singleton
{
static Goal<f> instance;
Singleton() { (void)(&instance); }
};
template<F f> Goal<f> Singleton<f>::instance;
void foo() { cout << "foo" << endl; }
void bar() { cout << "bar" << endl; }
int main() {
Singleton<bar> tmp;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiB2b2lkICgqRikoKTsKCnRlbXBsYXRlPEYgZj4gc3RydWN0IEdvYWwKewoJR29hbCgpIHsgZigpOyB9Cn07Cgp0ZW1wbGF0ZTxGIGY+IHN0cnVjdCBTaW5nbGV0b24KewoJc3RhdGljIEdvYWw8Zj4gaW5zdGFuY2U7CglTaW5nbGV0b24oKSB7ICh2b2lkKSgmaW5zdGFuY2UpOyB9Cn07CnRlbXBsYXRlPEYgZj4gR29hbDxmPiBTaW5nbGV0b248Zj46Omluc3RhbmNlOwoKdm9pZCBmb28oKSB7IGNvdXQgPDwgImZvbyIgPDwgZW5kbDsgfQp2b2lkIGJhcigpIHsgY291dCA8PCAiYmFyIiA8PCBlbmRsOyB9CgppbnQgbWFpbigpIHsKCVNpbmdsZXRvbjxiYXI+IHRtcDsKCXJldHVybiAwOwp9