On Jon's site he has thisvery elegantly designed singleton in C# that looks like this:
public sealed class Singleton { Singleton() { } public static Singleton Instance { get { return Nested.instance; } } class Nested { // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static Nested() { } internal static readonly Singleton instance = new Singleton(); } } I was wondering how one would code the equivalent in C++? I have this but I am not sure if it actually has the same functionality as the one from Jon. (BTW this is just a Friday exercise, not needed for anything particular).
class Nested; class Singleton { public: Singleton() {;} static Singleton& Instance() { return Nested::instance(); } class Nested { public: Nested() {;} static Singleton& instance() { static Singleton inst; return inst; } }; }; ... Singleton S = Singleton::Instance();