¿Contenedor que almacena una mezcla de objetos base y derivados?

¿Qué es lo correcto a hacer? Sé que si el contenedor es del tipo de valor de clase base, entonces el objeto derivado almacenado se 'corta'. Si el contenedor es del tipo de clase derivada, el objeto de la clase base no se puede almacenar. ¿Derecha?

Si ir con punteros, auto_ptr no se puede usar porque tiene un problema semántico de copia. ¿Shared_ptr es la única solución para manejar este problema?

¿Alguien podría proporcionar más detalles, código de muestra o artículos en línea que aborden este problema? Debería ser una pregunta bastante común, sin embargo, no encontré mucha información en el libro de texto o en línea.

Gracias por adelantado.

por cierto, acabo de buscar en unique_ptr. Parece que no soporta la copia semántica. Entonces, ¿no es seguro usar auto_ptr en STL, pero tal vez debido a la falta de copia de la semántica, muchas operaciones o algoritmos de STL no se pueden usar en el contenedor de unique_ptr?

Respuestas a la pregunta(4)

Su respuesta a la pregunta