Researching <map> and template.
When modify some thing links with a pointer, note that what you are truly modifying, the point or its content.

The C++ template class and function could not be linked with specialized instance, if the class and functions is define in different C++ files, due to the limitation of the compiler. The work around solution is to define them all in the Head files, or to initialize specialized instance where they are defined.