I heard and read a lot about singleton implementation approaches in C++, like Meyer, Phoenix, etc., but all of them seemed to have a problem in certain usage scenarios. So I came up with my own implementation approach, the Daniel Singleton. What I would like to know is if it's correct or not... I think it is, but please tell me if it has any flaws I did not think of!
Also, I tried to make it thread-safe without acquiring locks all the time by using double-checked locking, which I read a lot about too, and everybody stated that it's broken. I tried to fix that too, and I'd like to know if my solution is correct or not... and if it's not, then how can it fail?