Compartilhando membros estáticos entre instanciações de modelo? (impossível?)

Estou fazendo algo que provavelmente é bobo, mas seria bom se funcionasse.

Estou tentando especializar tipos de uma maneira que eu preciso da minha própria estrutura de pesquisa que é essencialmente global (mas idealmente encapsulada como uma variável de classe), mas quero que os objetos sejam do tipo seguro, para que sejam parametrizados.

Consequentemente, eu tenho, essencialmente

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

e por qualquer motivo, não pensei até o momento em que fui inicializar a lookTable que quando digo

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

haverá muitos diferenteslookupTables correndo por aí ligados às várias instanciações deSpecialArray.

Suspeito que possa ser apenas um sonho, e que a resposta correta seja apenas um objeto singleton global separado, mas existe uma maneira de torná-lo tal que exista apenas umlookupTable por todo oSpecialArrays?

Tipo, no C ++ em minha mente (que não é C ++ real), isso seria algo como

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

... mas infelizmente o GCC não compila o C ++ em minha mente

Existe alguma maneira real de obter o que eu quero (em algum lugar no C ++ 0x-land ou algo assim)? É provável que eu encontre esse problema também com alguns métodos estáticos que manipulam essa tabela de pesquisa (que não controla tipos ou Ns).

... desculpe se isso não fazia sentido.

Agradecemos antecipadamente por qualquer ajuda ou simpatia que você possa dar.

questionAnswers(2)

yourAnswerToTheQuestion