Despite looking like it, 'template<> Vector<Complex> :: Vector( Vector<Complex> const&);' *1 is not a template. It is just a function. Specifically: it is a function in a header that is not declared 'inline'. Solve this problem the way you would, your preference, for any other such "problematic" function.
Edit: From what I can tell, MSVC has it right. I think 'LD' is just being a little to aggressive in ignoring multiple definitions for template functions.
Soma
*1:
Code:
template<> Vector<Complex> :: Vector( Vector<Complex> const&);