Cleaning Up a Singleton in C++