Each (non-virtual) member of each class template you want instantiated needs to be referenced from non-template code, directly or indirectly. It is not enough to instantiate the class itself.
This is governed by the standard 14.7.1/2:
Unless a member of a class template or a member template has been explicitly instantiated or explicitly specialized, the specialization of the member is implicitly instantiated when the specialization is referenced in a context that requires the member definition to exist; in particular, the initialization (and any associated side-effects) of a static data member does not occur unless the static data member is itself used in a way that requires the definition of the static data member to exist.
In your case it is enough to reference the member from CGenericActive
constructor (you need to write this constructor obviously), like this:
CGenericActive()
{
// just reference it so it gets instantiated
(void)ms_passive;
}