Ну, Вы знакомы с List в Delphi (или в Яве до-дженериковой)?

Вы делаете любую структуру данных, способную хранить ANYPTR (или Object, в терминах Delphi).

И любой динамический объект может быть помещён в эту структуру данных (указатель на него).

Минус, конечно, в том, что лишняя нагрузка на дин. память (которой нет в STL-е). Однако всякие Яво-Шарпы всё равно хранят указатели, у них всё в куче...

Так что решение имеет недостатки только перед самим КП, на котором можно многое без нагрузки на кучу. Ну и перед С++-ами-STL-ями