>>285
やりすぎかもしれんが・・・w こういうのも出来なくはないかもしれない、
気もしないでもない。
InitUninitFunc funcs[] = {
  {InitHogeGraphics, UninititHogeGraphics},
  {InitHogeAudio, UninititHogeAudio},
  ...
};

bool Init()
{
  for (int i = 0; i < NELEMS(funcs); i++) {
    if (!funcs[i].init()) {
      for (int j = i; j > 0; j--) {
        funcs[j].uninit();
      }
      return false;
    }
  }
  return true;
}