テンプレートクラスの配列

C++で,インスタンス化されたテンプレートクラスを配列でまとめたいなぁと.
例えば

template <class T> class Hoge {
private:
 T _val;
public:
 Hoge(T t){ _val = t;}
 T Get() {return _val;}
};

みたいなクラスがあって,HogeとかHogeを同一のコンテナに格納したいと思った.
でも特殊化されたらそれはもうそういう型であって,HogeHogeは同一の型として扱えないから無理なのか.
list >見たいな怪しい書き方出来たらよいのだろうか.
C#GenericsでないArrayListとか見たいになんでも放り込めるのも,利用する側から型情報が分からないとそれはそれで不便だ.
その場合いちいちtypeofで調べてswitchさせるんだろうか.
配列にぶち込んだ意味を忘れるくらい泥臭い.

テンプレート使わないでポリモフィズム使えば親クラスの型でまとめられるけど,無駄にクラス定義が増えるのもいやだったり.