OK I've built up this complex set of classes initially using a lot of template meta programming. I did this to make the compiler do a lot of work beforehand for performance reasons.

Well over time I decided that approach was a mistake. I really wanted more runtime polymorphism with my classes and not compile time polymorphism. So I went back and combined all my different types (e.g. real matrix complex matrix upper triangular etc.) into a single matrix type.

That works great, but initially I was lazy and put all my function implementations inside my class. I could get away with it for templates, since they aren't created until used, and in fact the implementation is required to be in the header as far as I know.

Unfortunately now I have an un-templated class implemented inside the header within the class declaration itself. This means I can only include the header into one .cpp source file unless I want linker errors.

The header file is pretty complex and it would take quite some time to pull out all the implementations, generate the appropriate C++ syntax for it, and get the results I need in a timely fashion.

Is there any possible way of making this work in a short period of time? The two things I've thought of are 1) including all my source in one ugly giant file, possibly via includes.
and 2) slowly start to build a declaration only header for the components that I need. The latter approach ends up requiring the constant synchronization of two header files.