#include <iostream>
template <class T>
class Singleton
{
private:
static T* instance;
protected:
Singleton<T>( )
{
if ( instance == 0 )
instance = static_cast<T*>(this);
}
public:
static T* getInstancePtr( )
{
return instance;
}
};
template <class T> T* Singleton<T>::instance = 0;
struct Console : public Singleton<Console> {};
int main()
{
Console c1, c2;
std::cout << (&c1 != &c2);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFNpbmdsZXRvbgp7CnByaXZhdGU6CiAgICBzdGF0aWMgVCogaW5zdGFuY2U7Cgpwcm90ZWN0ZWQ6CiAgICBTaW5nbGV0b248VD4oICApCiAgICB7CiAgICAgICAgaWYgKCBpbnN0YW5jZSA9PSAwICkKICAgICAgICAgICAgaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxUKj4odGhpcyk7CiAgICB9CgpwdWJsaWM6CiAgICBzdGF0aWMgVCogZ2V0SW5zdGFuY2VQdHIoICApCiAgICB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+IFQqIFNpbmdsZXRvbjxUPjo6aW5zdGFuY2UgPSAwOwoKCnN0cnVjdCBDb25zb2xlIDogcHVibGljIFNpbmdsZXRvbjxDb25zb2xlPiB7fTsKCmludCBtYWluKCkKewogICAgQ29uc29sZSBjMSwgYzI7CiAgICBzdGQ6OmNvdXQgPDwgKCZjMSAhPSAmYzIpOwp9Cg==