It depends on the kind of program being written. C# is a good choice for certain kinds of programs; but one mainstream programming language is never going to be universally better than another one. Children believe that there is this one magic tool that is best for everything.
I tend to use either C++ or Python for most of the stuff that I write.
Video games are just one example of resource-constrained programming for which C++ is the best production-grade language. Whether you're programming jet engine controls, high-speed traffic enforcement system, oil pipeline, or a laser printer, you need strict, prioritized control over resources and execution paths, or things will break, explode, and kill people. Whether you're programming a new top video game, a high-frequency trading program, or a whole stock exchange, a millisecond becomes an eternity and you need code that runs faster than your competitors can do on the same, latest, hardware. This is when C++ is again the only choice - other technologies don't survive the competition.
And yes, infrastructure is another huge niche that isn't going away.
unless you're writing code for military equipment :p
both C++ and C# can be used for games, however C++ is mostly the one used. However there are now a few top rated games selling on steam which were made with XNA. (which Microsoft decided to stop supporting... grrrrr... )
for accounting, database, etc. C# is used a lot. Simply Accounting was made with C# if i remember correctly.
for anything else, C++ is used a lot, like Cubbi said; "Jet engine controls, high-speed traffic enforcement system, oil pipeline, etc... "
Just kidding, C++ is a pretty big language that gets used in all sorts of fields. I'm currently an interview process with a large healthcare technology company for an intern position, and they use Java, Object-C, C# for their front end technologies, but the backend is all written in C++ and PHP.