@Bjarne: I have a question -- or two :)
Around the 22 minute mark (in the systems panel) you've mentioned that it's hard to simplify complicated programming languages while maintaining backward compatibility. Afterward, there's been an interesting discussion of going beyond code analysis -- with automatic code transformation tools for mechanically-assisted code modernization / rejuvenation.
I'm wondering, what are your thoughts on Clang C++ Modernizer in this context?
// "clang-modernize is a standalone tool used to automatically convert C++ code written against old standards to use features of the newest C++ standard where appropriate."
The project was featured in the following LLVM Project blog post (and presented at Going Native 2013 by Chandler Carruth):
As a follow-up, in the context of incremental / user-controlled (opt-in) deprecation, would it be possible (and make sense) to introduce (to the Standard) features akin to restrictions and profiles in Ada?
For instance, the Ravenscar profile is one example:
Perhaps some day we could have `No_Explicit_Heap_Allocation` (preventing raw `new` and `new` in a given translation unit)?
/* One could go even further and prevent (at compile time) unchecked access (perhaps, and this is just thinking out loud, something like using `at` member function instead of `operator` for translation units that opt in; although one would have to consider linkage, ABI compatibility, and further interoperability issues beforehand):
This could also help in as an automatic coding style enforcement -- right now we need to rely on manual adherence (or use non-standard extensions / LINT tools, which can vary from workplace to workplace) to a coding standard (for instance, JSF AV C++ coding standards forbid exceptions -- with compile-time restrictions this rule can be verified by the compiler).