#include <bits/stdc++.h>
using namespace std;
once_flag flg;
class SingleTon
{
static SingleTon* pInstance ;
SingleTon(){}
SingleTon& operator=(const SingleTon& a){}
SingleTon(const SingleTon& a){}
int val ;
public :
static SingleTon* getInstance()
{
if(pInstance==nullptr)
{
call_once(flg , [](){pInstance = new SingleTon(); }) ;
}
return pInstance;
}
void SetVal(int i){ val = i ;}
int GetVal(){return val;}
};
SingleTon* SingleTon::pInstance = 0;
int main() {
// your code goes here
SingleTon::getInstance()->SetVal(10);
cout << SingleTon::getInstance()->GetVal();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpvbmNlX2ZsYWcgZmxnOwpjbGFzcyBTaW5nbGVUb24KewoJc3RhdGljIFNpbmdsZVRvbiogcEluc3RhbmNlIDsKCVNpbmdsZVRvbigpe30gCglTaW5nbGVUb24mIG9wZXJhdG9yPShjb25zdCBTaW5nbGVUb24mIGEpe30gCglTaW5nbGVUb24oY29uc3QgU2luZ2xlVG9uJiBhKXt9CglpbnQgdmFsIDsKCXB1YmxpYyA6CglzdGF0aWMgU2luZ2xlVG9uKiBnZXRJbnN0YW5jZSgpCgl7CgkJaWYocEluc3RhbmNlPT1udWxscHRyKQoJCXsKCQkJY2FsbF9vbmNlKGZsZyAsIFtdKCl7cEluc3RhbmNlID0gbmV3IFNpbmdsZVRvbigpOyB9KSA7CgkJfQoJCXJldHVybiBwSW5zdGFuY2U7Cgl9Cgl2b2lkIFNldFZhbChpbnQgaSl7IHZhbCA9IGkgO30KCWludCBHZXRWYWwoKXtyZXR1cm4gdmFsO30KfTsKClNpbmdsZVRvbiogU2luZ2xlVG9uOjpwSW5zdGFuY2UgPSAwOyAKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJU2luZ2xlVG9uOjpnZXRJbnN0YW5jZSgpLT5TZXRWYWwoMTApOwoJY291dCA8PCBTaW5nbGVUb246OmdldEluc3RhbmNlKCktPkdldFZhbCgpOwoJCgkKCXJldHVybiAwOwp9