А как вы себе это представляете? Вектор - шаблонный класс и параметр шаблона задаёт тип. Поэтому вам нужно искать что-то готовое для этой цели или мудрить своё. Информацию о типе в любом случае где-то хранить придётся(ну или помнить что куда складывали, но это неудобно и не всегда получится), т.к. элемент контейнера - это просто набор байтов. Я вижу 2 варианта:
1 выделять память большим куском и где-то сохранять информацию о типе, скажем так:
до 4 байта - int, до 12 байта - double, до 50 байта - SomeType. Можно хранить в том же блоке данных перед каждым элементом. Для хранения информации о типе в C++ есть RTTI, там не так много возможностей, но всё же.
2 хранить указатель на void и опять же тип, но на этот раз для каждого элемента.
Если планируется хранить данные примерно так: [int, int , int, int, double, Color, Color, Color, Color, Color, Color], то можно сэкономить, сохраняя диапазоны.
Первый вариант лучше тем, что данных не разбросаны по памяти.
Погуглите, я думаю оба варианта уже кто-то реализовал.
UPD: набросал на коленке первый вариант
https://github.com/DevAlone/c-universal-container/...