Начните с класса, как указано выше, предоставьте минимальный интерфейс, необходимый для ваших плагинов. Затем реализуйте его в терминах контейнера, который вы собираетесь использовать. Это называется контейнерным адаптером, и именно так реализован std :: stack.
Если вам действительно нужен адаптер для более чем одного контейнера STL с шаблоном, взгляните на std :: stack, он покажет, как это сделать.
Не включайте typeid, зачем вам это нужно?
Кстати, придерживайтесь того, что предлагает Джеймс, если нет необходимости выставлять сам контейнер.