Por que os campos de modelo estático não são inicializados a menos que sejam usados? [duplicado]
Duplicata Possível:
(inicialização estática / instanciação de modelo) problemas com padrão de fábrica
tentando forçar a inicialização de objeto estático
https://stackoverflow.com/a/2852234/673730
Suponha a seguinte classe:
<code>template<class X> struct A { static bool x; static bool foo() { cout << "here"; return true; } }; template<class X> bool A<X>::x = A<X>::foo(); </code>
Eu teria assumido que quando eu me especializarA
, o campo estáticox
seria inicializado. No entanto, o seguinte:
<code>A<int> a; //no output </code>
não resulta em uma chamada parafoo
. Se eu tentar acessar o membro, o comportamento é o esperado:
<code>A<int> a; bool b = a.x; //output: here </code>
EDITAR:Como posso ter certezaA::x
é inicializado sem acessá-lo?