As here, there is a unique_ptr to the singleton instance.
I found this a bit awkward.
Should this ptr be a raw ptr ? or maybe we can use an optional reference_wrapper (I haven't tested but there are some example e.g. here.
Or maybe we can simple do not store class member ptr to singleton.