An Exception Correct C++ Singleton Template Base Class with Controlled Destruction Order

Peter Nordlund

Technical report CVAP246, ISRN KTH NA/P--00/14--SE. Department of Numerical Analysis and Computer Science, KTH (Royal Institute of Technology), S-100 44 Stockholm, Sweden, Oct 2000.


This article describes some problems that may arise when trying to write exception safe C++ code and at the same time using STL. This is examplified with an implementation of a Singleton base class with a Destruction Manager that satisfies Abrahams' Strong Exception Guarantee [Abr97]. The Destruction Manager is based on the "Manager design pattern" by Sommerlad and Buschmann [SB96] and it destroys all instantiated Singletons in a controlled order. One part of the presented code is analyzed for exception safety in a more formal way, as suggested by Sutter [Sut99].

Postscript: (275 kb)

PDF: (272 kb)