Many embedded programmers come from a background that doesn't expose them to those sorts of ideas though.
As a software inclined embedded guy I also often think of what would be possible if we switched to C++. But then I think of what's probable.
Namespaces, References, collection types (std::array, string_view, intrusive containers, etc.), RAII (release mutexes at scope ends), strong typing, proper encapsulation, interfaces, etc.
There's a case to be made for an OO style program where I create an object and give it a chunk of memory to manage a B-tree, so I can keep my memory from being fragmented, but using C++ for that is serious overkill.
As I type that, I realize I've recently learned to love Go, so maybe it is my bias.