class MyClass{ int i; public: MyClass(int i_):i(i_){} }; std::once_flag flag; void createInstance(){ p=new MyClass(17); } void bar(){ std::call_once(flag,createInstance); }