That is true in general about C++ for engines and C# (or other) for games, but in the case of the languages used for scripting a game, the experience of the game developers will increase, will it not? Since game developers far outnumber game engine developers, the very skilled programmers with slowly but surely find ways - a few of them - of soaking deeper into the previously frozen tundra surface of game engine development.
The same thing happened with C++ when it was younger than its lower level siblings being used for engines. We see another set of languages today competing for higher level function in principle just like the previous period of C++ evolution did.
What I am saying is that C# and support is evolving to some day replace C++ to a large extent but must go through the same basic vetting process that happened in C++. I expect that C# will do it better in its life cycle than C++ is doing it.
If you really think deeply about it, C# is being directed by industry leaders to indeed become the game development leader to surpass C++ some day. Even if they fail at that vision, C# will almost surely be a heavy weight someday in the same ring with C++. It is a matter of growth and training - literally.
Remember to think big picture and in terms of the very real industry cycles of technological development. In the non-game world, C# is gigantic. The development software for C# is comprehensive and improving. The massive crop of C# programmers will grow to maturity, ready to harvest someday in a big way in program development. A mass that large will have a large effect, just like real world physics.
C++ isn't going anywhere till we use/create game engines.
Do you want to know, why we switched from assembly? Productivity was only one of the reasons. The main reason was, that we changed the way we changed the way we created games. We introduced the concept of *game engines*. We started using C/C++, and we are going to use it for game engines until we see a radical change in the way we create games (maybe games withought game engines). Till then live happy. (very very long time).
Looking at a larger picture, only a *systems programming languages* like Rust or D can replace C++, if ever.
Till then (what? Eternity?) use C++ to write game engines, and use C# or your favurate language to write a cool game. I am doing that, and I do not/will not regret it