C++ is more C-like than Zig and Rust, so it's more likely to become a C replacement.

I do feel like allowing for in-place source upgrading was critical to C++'s early successes. However, I feel like this ultimately worked against C++, since it also wed the language to many of C's warts and footguns.

C++ cannot seem to let go of the preprocessor, which is an anchor hurting the language at every turn.

BTW, in my C days, I did a lot of clever stuff with the preprocessor. I was very proud of it. One day I decided to replace the clever macros with core C code, and was quite pleased with the clean result.

With D modules, imports, static if, manifest constants, and templates the macro processor can be put on the ash heap of history. Why doesn't C++ deprecate cpp?

Except for all the baggage it carries along with it including hacks to address baggage resulting in a very bloated language.