Two things that I'd probably call just features of OO languages, but seem significant:
- Type-safe generic programming
- Introspection
- Type-safe generic programming
- Introspection
I was hacking together an Arc interpreter in Haskell the other day, and after refactoring some of the hairier monadic code, I was horrified to see that the type signature for a particular function was twice as long as the function body. And that's with the compiler figuring it out for me... I don't know what I'd have done if it was C++ instead.
C++ STL code can be similarly (un)fun.
http://en.wikipedia.org/wiki/Generic_programming#Generics_in...