Functions.h:
#pragma once
#include
template void TemplatedFunction(T* p) {}
template<> void TemplatedFunction
Such explicit specialisations should be moved to a .cpp file or made inline. The linker will find them there. If you define them in the header you will be getting "already defined" error messages just like you would get them for ordinary non-inline and non-static functions defined in a header included by multiple compilation units.