
On Tue, Jun 28, 2011 at 8:13 PM, Gottlob Frege <gottlobfrege@gmail.com>wrote:
On Mon, Jun 27, 2011 at 2:17 AM, Ben Robinson <icaretaker@gmail.com> wrote:
The Singularity Design Pattern...
The source files are available here:
http://www.mediafire.com/?d8kn5fx2n5d22
I look forward to your feedback.
Thank you,
Ben Robinson, Ph.D.
When does the constructor template <class T> ::boost::scoped_ptr<T> singularity_instance<T>::ptr(0); 'happen'?
ie there can be problems with the construction order of globals.
The private pointer is statically initialized, but is initialized to zero. Only when the user calls singularity<T>::create(), is the pointer reset to hold the newly created object. Therefore, there should be no issues with the construction order of globals... Unless, you decide to put that ::create() call in the constructor of another, non-singularity global. I would argue however, that the problem there is not with the singularity itself, but the fact that it was contained and initialized inside a global. Singularity can't forbid you from doing that, and if you do so, you give up control of the lifetime of the singularized object. The recommended usage is to call create() eagerly after main, and store the reference, and pass it to whomever needs it. I appreciate your inquiry, Ben Robinson, Ph.D.
Tony _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost