Had nobody ever attempted to fix these problems in a non-backwards-compatible way? I'm imagining a new "almost-c++" that ditches the preprocessor for something better and makes a few other changes with the goal of vastly improved compile times. Then it should be possible to produce a GCC or Clang++ plugin that translates from C++ to "almost-C++" automatically, making it trivial to switch.