Der Destruktor wird aufgerufen, wenn alle Objekte mit statischer Storage-Duration zerstört werden - am Ende des Programms.
Das "andere Singleton," das du da hast, ist übrigens kein Singleton. Ich kann immer noch weitere Instanzen von foo und bar erstellen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra