C ++: Llamando a la función virtual de la clase derivada

Supongamos que tengo una clase con una función virtual y una clase derivada que implementa la función virtual de una manera diferente. Supongamos que también tengo un vector de la clase base utilizada para almacenar clases derivadas. ¿Cómo ejecutaría la función virtual de una clase derivada en el vector sin saber de antemano cuál es la clase derivada? Código mínimo que ilustra el problema:

#include <iostream>
#include <vector>

class Foo {
public:
    virtual void do_stuff (void) {
        std::cout << "Foo\n";
    }
};

class Bar: public Foo {
public:
    void do_stuff (void) {
        std::cout << "Bar\n";
    }
};

int main (void) {
    std::vector <Foo> foo_vector;
    Bar bar;

    foo_vector.resize (1);
    foo_vector [0] = bar;

    bar.do_stuff ();            /* prints Bar */
    foo_vector [0].do_stuff (); /* prints Foo; should print Bar */
    return 0;
}