¿Compartir miembros estáticos entre instancias de plantillas? (¿imposible?)

Estoy haciendo algo que probablemente sea tonto, pero sería bueno si funcionara.

Estoy tratando de especializar los tipos de una manera que necesito mi propia estructura de búsqueda que es esencialmente global (pero idealmente encapsulada como una variable de clase), pero quiero que los objetos sean seguros para los tipos, por lo que están parametrizados.

En consecuencia, tengo, esencialmente

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

y por alguna razón, no pensé hasta el momento en que fui a inicializar la tabla de búsqueda que cuando digo

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

habrá muchos diferenteslookupTables corriendo adjunto a las diversas instancias deSpecialArray.

Sospecho que puede ser un sueño imposible y que la respuesta correcta es simplemente convertirlo en un objeto global único separado, pero de todos modos existe para hacerlo de tal manera que solo haya unolookupTable&nbsp;por todo elSpecialArrays?

Como en C ++ en mi mente (que no es C ++ real), esto sería algo así como

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

... pero lamentablemente GCC no compila el C ++ en mi mente

¿Hay alguna forma real de obtener lo que quiero (en algún lugar de C ++ 0x-land o algo así)? Es probable que me encuentre con este problema también con algunos métodos estáticos que manipulan esta tabla de búsqueda (que no realiza un seguimiento de los tipos o Ns).

... perdón si eso no tiene ningún sentido.

Gracias de antemano por cualquier ayuda o simpatía que pueda brindar.