Alexander Stepanov complains that C++ types cannot be used as such to represent (embody) what he calls concepts.
As an example, he mentions the concept of iterator, the representation of which requires that "STL relies very heavily on extra-linguistic specifications".
I have several comments upon that. First STL may not go exactly as far as possible in using C++ even to represent iterators (traits and generic type feedbacks are techniques which can be exploited even more than they are in STL). Next C++ may have restrictions that could be lifted (at least theoretically). Finally, this is OK: we meet here a limitation of classical categories (see Lakoff), which will apply to any attempt to fully "encapsulate" concept "definitions". Concepts simply cannot be "defined" - they are open, "emergent" (see Hofstadter), "autopoietic" (see Winograd and Florès)... I.e. they will be expressed at various levels in different contexts.