#include <iostream>
#include <vector>
struct Base {
    virtual void f() { std::cout << "Base\n"; }
    virtual ~Base(){}
};
struct Derived : Base {
    void f() { std::cout << "Derived\n"; }
};
int main()
{
    std::vector<Base> v;
    v.push_back(Derived());  // bad idea
    v[0].f();
}
