Statische Mitglieder zwischen Vorlageninstanziierungen freigeben? (unmöglich?

Ich mache etwas, das wahrscheinlich albern ist, aber es wäre schön, wenn es funktioniert.

Ich versuche, Typen so zu spezialisieren, dass ich eine eigene Lookup-Struktur benötige, die im Wesentlichen global ist (aber idealerweise als Klassenvariable eingekapselt ist), aber ich möchte, dass die Objekte typensicher sind, sodass sie parametrisiert werden.

Folglich habe ich im Wesentlichen

template<class T, int N>
class SpecialArray
{
//...
private:
   static map<string, internal_t> lookupTable
}

und aus welchem Grund auch immer, ich habe nicht gedacht, bis ich ging, um LookupTable zu initialisieren, dass, wenn ich @ sa

template <class T, int N>
SpecialArray<T,N>::lookupTable;

es werden viele verschiedene seinlookupTables herumlaufen, verbunden mit den verschiedenen Instanziierungen vonSpecialArray.

Ich vermute, es ist nur ein Wunschtraum und die richtige Antwort macht es zu einem separaten globalen Singleton-ObjeklookupTable für alleSpecialArrays?

Wie in C ++ in meinem Kopf (das ist kein echtes C ++), würde dies so etwas wie @ geh

template <class T, int N>
SpecialArray<*,*>::lookupTable;

... aber leider kompiliert GCC das C ++ in meinem Kopf nicht

Gibt es eine Möglichkeit, das zu bekommen, was ich will (irgendwo in C ++ 0x-land oder so)? Ich werde wahrscheinlich auch mit einigen statischen Methoden auf dieses Problem stoßen, die diese Nachschlagetabelle manipulieren (die Typen oder Ns nicht verfolgt).

... Entschuldigung, wenn das keinen Sinn ergab.

Vielen Dank im Voraus für jede Hilfe oder Sympathie, die Sie rendern können.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage