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 diferenteslookupTable
s 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 oSpecialArray
s?
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.