#include <iostream>
using namespace std;
template <typename T>
class Singleton
{
public:
static T& Get() noexcept
{
static T instance;
return instance;
};
protected:
Singleton() = default;
};
class Foo : public Singleton<Foo>
{
public:
int t = 0;
};
int main() {
Foo foo;
Foo::Get().t += 10;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFNpbmdsZXRvbgp7CnB1YmxpYzoKCXN0YXRpYyBUJiBHZXQoKSBub2V4Y2VwdAoJewoJCXN0YXRpYyBUIGluc3RhbmNlOwoJCXJldHVybiBpbnN0YW5jZTsKCX07Cgpwcm90ZWN0ZWQ6CglTaW5nbGV0b24oKSA9IGRlZmF1bHQ7Cn07CgpjbGFzcyBGb28gOiBwdWJsaWMgU2luZ2xldG9uPEZvbz4KewpwdWJsaWM6CglpbnQgdCA9IDA7Cn07CgppbnQgbWFpbigpIHsKCQoJRm9vIGZvbzsKCUZvbzo6R2V0KCkudCArPSAxMDsKCQoJcmV0dXJuIDA7Cn0=