On the contrary, most of it I would. Dispelling the notion that magic stuff exists under the floorboards is largely a good thing, and will clarify the most important question for learning anything: "why?"
Want to know how a std::vector works? Well, now we need several pages of documents, an explanation of how arrays work, and so on. And you will need the help of all the gods if you want to explain why, when, and how it breaks with pointers into them to a new programmer.
Yeah, it works great and does exactly what you wanted. Up until the point it doesn't because you aren't OCD enough to read and memorize every miniscule detail of the docs. At which point you face non-trivial bugs caused by a mismatch of expectations and reality.
What is stored in a variable? A value. What is stored in a pointer? A value. Both are just data; you can even print out the pointer's number. So what's a pointer? It's just a fancy street address. Still just a value. What's an array? Just a street address of the first house, and some other number which tells you how many houses in a row there are. Dereference a pointer and you go to the street address and take a look at the house directly. You can also build a house. When you build a house, you write down the street address for where you built it. If you lose that street address, now nobody knows where the house is. But if somebody comes along and decides they want to build some houses, they won't be able to build at that address, since there's already a house there. And so you should tear down your house (or at least sell the lot) before forgetting you own something there, or the town fills up with vacant rundown houses.
Two or more people own a home together? Introduce timeshare or similar analogies and you're set to continue in this vein. Simple concepts, without the need for anything more than layman's understanding of the every day. Likewise, which you mention bugs as being a big problem with this, I would turn it around and say they're the biggest benefit. You can name the types of bugs because they are consistently similar. Likewise, relatively trivial automation and tool environments can detect them, and any experienced dev can diagnose and correct them immediately. The same can not be said for bugs or errors involving internally complex and abstract high-level structures. Any day of the week, I would rather debug a trivial out of bounds or leak bug over a crash 10 functions deep in STL triggered by a similarly trivial but now obfuscated change to data fed into a more complex system.