Soln 1) I was trying for compile time checks but will fall back to this
Understood. It's a weird error: I don't believe that the compiler should be instantiating those methods at all, but <shrug>.
Soln 2) I understood partial specialization wasn't supported in VStudio but I might do this for float, double and dim 1-4; I had started to do something similar by deriving Vector3<T> template from Vector
when I ran into the trouble.
Partial specialisation works just fine in Visual Studio 2003 (VC7.1 and later).
Soln 3) I like this one but haven't made it work yet. It succeeds if I export the specialized Vector
::Normal() but not if I export Vector3<T>::Normal () but i'm working on it ;-)
Your right, I've just tried it out, and it leads to even stranger errors: the template members get instantiated with some really strange argument types, I've no idea what's going on there at present. John.