But how would you write plugin frameworks without function pointers?

They're the same as variable pointers, just referring to functions that can be called by address instead of values that can be read by address. Simple!
Templates? No idea. When I hear "template", I think of a stripped source file that can be customized to do something convenient without having to write it all from scratch. I assume the C++ concept is vaguely related, although not necessarily. "Overloading" sounds like something that would cause a compiler error, but it's actually a useful (if not sometimes obfuscating) feature, so who knows?
I'm a huge fan of clean, readable, intelligible code. Anything that makes code harder to comprehend is detrimental, although occasionally necessary. While I also like to write efficient code, if I have to pick between clarity and performance, it becomes an internal struggle weighted mostly by the number of times the given code will be run in a loop, or whether there will likely be events depending on its completion in the shortest possible time.
C++ just reeks of a language developed with all the latest theory and patterns, while being early enough that it didn't have the benefit of learning from the dubious attempts by many other well-established languages trying to achieve similar goals. (I could be way off -- I'm not a comp-sci history buff.) It's almost like you can see the parts where C++ departs from C syntax the same way you can tell when somebody added a room to a house 20 years after it was constructed. This side? Elegant, logical, well-planned and solid. This side? The contractor forgot to let the foundation settle, and the AC outlets all tap off the light switch in the adjacent bathroom, but the paint's fresh and vibrant!
Then there's PHP, which has absolutely no excuse. Sheesh. Is this perl or C? Nobody knows.