C++ Singleton

Da Andreabont's Wiki.

Da specifiche del C++ una variabile statica è sempre inizializzata in modo tread-safe, ne segue che questa è l'implementazione corretta più semplice del pattern singleton in C++:

class Singleton {

private:

   Singleton() = default; // Costruttore di default, ma privato
   Singleton (const Singleton&) = delete; // Inibisco creazione del costruttore di copia.
   Singleton& operator = (const Singleton&) = delete; // Inibisco creazione dell'operatore di assegnazione.

public:

   static Singleton& instance() {
      static Singleton _instance;
      return _instance;
   }

};