There's not only the features, but how they are done. D users regularly tell me that it is just so much easier to program in D. Aesthetics do matter.
I've pointed out many times that thousands markers in D came from Ada. However, no other language did them until D did.
Yes, Lisp has compile time function execution. Where it remained until D did it with a compiled language.
C++'s implementation of ranges is still based on pointers (an iterator pair), rather than based on arrays as in D. The language loses semantic information because there is no particular thing that connects the iterator pair as being the limits on an array. Basing ranges on arrays enables crucial things like array bounds checking.
Yes, D's contracts are based on Eiffel. But they also went nowhere until D adopted them.
I've pointed out many times that thousands markers in D came from Ada. However, no other language did them until D did.
Yes, Lisp has compile time function execution. Where it remained until D did it with a compiled language.
C++'s implementation of ranges is still based on pointers (an iterator pair), rather than based on arrays as in D. The language loses semantic information because there is no particular thing that connects the iterator pair as being the limits on an array. Basing ranges on arrays enables crucial things like array bounds checking.
Yes, D's contracts are based on Eiffel. But they also went nowhere until D adopted them.