template<typename T>
class Singleton
{
public:
static T & get()
{
static T instance;
return instance;
}
protected:
Singleton() {}
};
class Yoba : public Singleton<Yoba>
{
};
int main()
{
Yoba x;
Yoba::get();
return 0;
}
dGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgU2luZ2xldG9uCnsKcHVibGljOgoJc3RhdGljIFQgJiBnZXQoKQoJewoJCXN0YXRpYyBUIGluc3RhbmNlOwoJCXJldHVybiBpbnN0YW5jZTsKCX0KCnByb3RlY3RlZDoKCVNpbmdsZXRvbigpIHt9Cn07CgpjbGFzcyBZb2JhIDogcHVibGljIFNpbmdsZXRvbjxZb2JhPgp7Cn07CgppbnQgbWFpbigpCnsKCVlvYmEgeDsKCVlvYmE6OmdldCgpOwoJCglyZXR1cm4gMDsKfQ==