
2) The instance() member is global, so you cannot fully encapsulate it
inside the classes that need it. Singularity allows you to optionally expose global access to the class, should you desire context independent objects.
The code is two lines of straightforward C++. You're free to encapsulate it the way you want. That's easier than dealing with the idiosyncrasies of a library.
Creating a Singleton instance with the global instance() member and passing
the resulting object into another object for encapulation, does not encapsulate the Singleton. The instance() member is still global, and any other code, can directly access that instance. Therefore, Singleton exposes the instance at global scope, prevent true encapsulation. Sometimes global access is desirable. However, sometimes we use Singleton just to enforce the single instance, and get the global access as baggage. Instance count and accessibility should be orthogonal. Singularity allows you to enforce the single instance, and <optionally> provide global access to the instance, according to the developer's needs. Ben Robinson, Ph.D. ______________________________**_________________
Unsubscribe & other changes: http://lists.boost.org/** mailman/listinfo.cgi/boost<http://lists.boost.org/mailman/listinfo.cgi/boost>