Why am I allowed to access the private constructor in the definition of s? I guess it's because s is a member variable of Singleton? Because clearly, a definition like
Singleton s (3);
would not work since the constructor is private. However, if I defined a class member of type X (where X is a different class) within the Singleton class, that class member would not have access to the private members of Singleton. So I guess the Singleton pattern works because I have a member variable of Singleton that is itself a Singleton, and as such has access to the private constructor of Singleton?