A common mistake is to assume that a vector is like a vector if Derived is a subclass of Base. However, there is no relationship between classes generated from the same class template. As a result, this relationship doesn’t hold. The reason is that templates are instantiated at compile time. A vector has to ensure that all of its members are actually pointers to Base. Otherwise, unexpected surprises may occur at run time.