I agree you can't completely avoid writing assembly for some embedded - especially DSP.
But years ago I pretty much switched to C++ for embedded except tight inner-loops that require hand optimization. I had to convince my boss at the time that it was acceptable by showing lots of generated C++ assembly code compared to equiivelent C. In practice C++ often produced BETTER code, (those virtual functions are like using function pointers that you casually pepper the code with).
It seems though that most people have blurred the line between C++, and the form of C++ that we're [aggressively] taught to write. The actual C++ language doesn't require using accessor functions for every coefficient in a transform matrix, that's just what people do.
Off topic: But I really don't know why so many people use C++ for non-embedded. It's perfectly valid for many - maybe most - applications to trade efficiency for safety, so use a different language. Why pick one that accommodates all the power of C then constantly beat on the developers with a giant list of coding guidelines? When the greatest attribute you seek in a developer is pedantry then something's wrong.