執行緒安全的 Singeton

Version >= C++ 11

C++ 11 標準保證了函式作用域物件的初始化以同步方式初始化。這可用於實現具有延遲初始化的執行緒安全單例。

class Foo
{
public:
    static Foo& instance()
    {
        static Foo inst;
        return inst;
    }        
private:
    Foo() {}
    Foo(const Foo&) = delete;
    Foo& operator =(const Foo&) = delete;
};