I have now been crawling the web and these forums for hours without finding any answers...
I am attempting to implement template specialization on a string conversion function, the project has multiple TU so of course I receive multiply-defined errors if I define the specializations in my header, now here's the rub: I have it from multiple sources (MSDN among them) that there are two solutions to this, inlining and separating the definition from the declaration, however I have yet to find a single example of the second anywhere on the internet. I would really rather not inline the code yet as I am nowhere near the optimization phase, not to look a gift horse in the mouth. Here is what I have now (abbreviated), the form of the separated definition is just extrapolation on my part. Fatal errors occur during compilation:
Code:
String.h

//Tested and works excellent for built-ins
template <typename T>
String format(const T& val, const String& tag)
{
	//Do lots of Work Here
	return str;
}

//Template Specialization to format a Position parameter
template <>
String format<Position>(const Position& val, const String& tag);
Code:
String.cpp

//Template Specialization to format a Position parameter
template <>
String format<Position>(const Position& val, const String& tag)
{
	//Code Here (Tested separately, works well)
}
1>Compiling...
1>String.cpp
1>c:\users\tim\documents\visual studio 2008\projects\bleak\ogretest\string.cpp(17) : error C2912: explicit specialization; 'Bleak::String Bleak::format<Bleak::Position>(const Bleak::Position &,const Bleak::String &)' is not a specialization of a function template
1>c:\users\tim\documents\visual studio 2008\projects\bleak\ogretest\string.cpp(17) : fatal error C1903: unable to recover from previous error(s); stopping compilation

Any guidance would be much appreciated.