Instead of depending on the compiler to instantiate your template, youshould explicitly instantiate them using the following statement:
template class vector; // for class instantiationtemplate int& vector::operator[] (int); // for member instantiation
This practice can greatly improve link-time and recompilation efficiency. If you are suffering from long compilation time, consider using this method. It can also provide much better control over the order of compilation of templates. It also greatly helps to track down compile bugs caused by automatic template instantiation. This practice also removes the need to include .cpp files with some compilers.