Originally posted by Toxick
And now, I'm trying to figure out what's the point of using an OO library or language if you can't (or shouldn't) use OO techniques. (like inheritance).

Which, I suppose, puts me in the position of the original poster, and I don't think we need to hash that out again.
IMHO, this quote reflects quite well the basic misunderstanding floating all about this thread, probably the same which led to its initial creation by darwen. In one of the earlier post to this thread, Zeeshan already made some valid statement to this subject, I'll try to put them in simpler words:

Yes, C++ started up as an "object-oriented" superset of the "procedural" C language, introducing elements like classes, inheritance, polymorphism via virtual member functions, etc... Hence, C++ is very commonly perceived as an "OO language". So when templates were added to the language, many didn't notice at first that this wasn't yet another addition to make the language even "more OO", but the introduction of a new concept: that of generic programming. But generic programming is not part of the OO paradigm, nor does the reverse apply. To some extent, those two concepts are even orthogonal to each other, and C++ allows you to use of both of them.

I remember that when I first heard about the idea to bring templates into C++, I saw them as an ugly and superfluous addition to the language, some kind of sophisticated macro preprocessor which just spoiled the nice OO concepts. It took some time to understand that a container library like the STC part of STL is not an OO library, but a completely different animal: Instead of implementing containers as classes which polymorphically keep pointers to instances of a base class from which you derive your own concrete classes (like the original MFC containers do), they use template metaprogramming to achieve a similar goal, which is by no means OOP, but generic programming.

Each time the "STL vs. MFC" or the "STL vs. not STL" discussion arises, I see statements from people how seem to be stuck with the idea that the STL is an OO class library implemented with templates. However, the STL is not OO. Likewise, C++ is not an OO language. C++ is a real allrounder, having all of a low-level language which can be used for systems programming tasks at nearly machine level, yet being procedural and block-structured (the idea C started with), and it features strong OO elements as well as generic programming.

So while I understand the point of view of darwen and Toxick, I also suspect that they just failed to notice until now that templates (in general) and the STL (more specifically) have nothing to do with the OO concepts of C++ - they just move along another dimension of the C++ space.