No. There is no such restriction. In fact you should keep all your templates (including their definitions) in headers.
This might be a bug in VC++. If there are compiler errors, post your code.
Are you writing std::vector<datatype> varName;? Are you making sure to include #include <vector> at the top of your code? Do you have an "#ifdef" or "#ifndef" that is preventing anypart of the declaration from executing?
Before your compiler gets a look in, the preprocessor takes the contents of every file you include with a #include, and dumps it wholesale into the file in which you include it (i.e. into your cpp file).