The template implementation must be visible at the time of instantiation. This is the case for almost every single compiler out there.

What you did was separate the implementation from the...