Before C++11, you couldn't instantiate templates with local classes. You have two options:
1) Put the st
definition outside of main
#include <vector>
struct st { int a; };
int main()
{
std::vector<st> v;
}
2) Compile with a c++11 compiler