Listing 6

static void ScheduleDestruction(T*, void (*pFun)()) {
  static bool firstPass = true;
  deleter = pFun;
  if (firstPass) {
    std::atexit(GracefulDelete);
    firstPass = false;
  }
}