bearophile wrote:
1) No compile time encapsulation: "In naturally written C++ code, changing the private members of a class requires recompilation of the code using the class." I think D solves this problem, you only have to compile the module the contains the class (generally a module contains related classes/functions).
D doesn't solve this problem. Changing the private members changes offsets of other members and derived classes, so they must all be recompiled. Inline functions are also, of course, affected.
The way to avoid this is to use interfaces.