Dear Ian, A comment regarding the GCC-in-C++ idea. In slide 16 you merely answer
"C++ is too complicated!" with "Maintainers will ensure that gcc continues to be maintainable." C++ has, for example, 12 different ways to represent or invoke a function. It has no buikt-in typesafe "enum"s. Sooner or later developers will think more about "should this better be a member function or a static inline function?" or "how do I make dynamic_cast work with my enum sets?" than about the algorithm they want to implement. How can maintainers ensure this does not happen? You cannot pick a set of C++ features and say "we will only use these elementary C++ features, not the complex ones". It won't work because 1) The compiler forces the developers to use more and more advanced features. As soon as you want to use classes, you must learn about inline, const, constructors and destructors. People will request that you use namespaces. Multiple inheritance is not on your wishlist in the beginning, but you will likely use it sooner or later. You can be lucky if you avoid virtual inheritance... 2) Year over year, advanced developers will start relying on even more fancy features: templates, exceptions, 'explicit' constructors, Koenig lookup, etc. Less advanced developers would like to say "no", but their voice doesn't count as much as the voice of advanced developers. So year after year, the full set of C++ features gets used. Bruno