You may not specify a class specialization for the constructor name while declares it. Either you shall specialize the whole class or define a template constructor and specialize it.
1. I realized that you are using an empty template declaration. I also figured out that you need an empty template declaration every time you must declare and define another constructor, and a template declaration with proper parameter when you are trying to define a function.
Do x template declarations tell the compiler that there will be x definitions of functions/constructors for templates (could be different templates)?
Any ideas? Or does the empty template declaration simply tell the compiler a specialized template definition is coming directly after the empty template declaration?
Yes. The the lexer/parser will expect a specialisation after template<>.
You can define a specialisation anywhere after the base-class definition, such as source files, headers, in-line files, etcetera. Specialised templates are permitted to be within source files, because specialised templates are complete types, and therefore, the compiler has all the information it needs to compile the template.