Many features of D have since found their way into C++, such as ranges, compile time function execution, thousands separators in numeric literals, conditional compilation blocks, etc.
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.
Yeah, maybe they should have, would have been a lot simpler.
But C++ really wanted modules to be a more or less drop in replacement for #include (or at least a set of common use cases), which really pushed up the required level of complexity.
That it was already there via Apple and Google's work, header maps, but what we got was Microsoft proposal, after some collaboration with Google.
Note at WWDC 2024, the module improvements regarding build times, in what concerns C++, it is based on header maps as well. Apple is not even bothering with C++20 modules.
Many things D might have done it first, yet it is hardly acknowledged, or has any impact on adoption without a major backer.
I also keep telling WG14 should care about security, since Usenet days, fighting windmills.