Consider the following classes
class Base { public: virtual void do_stuff() = 0; }; class Derived : public Base { public virtual void do_stuff() { std::
Actually you cannot store references in STL, only pointers or real values. So T is Base* Try other things you will have your compiler complaining.