¿Por qué no se inicializan los campos de plantillas estáticas a menos que se utilicen? [duplicar]
Posible duplicado:
(Inicialización estática / creación de instancias de plantilla) problemas con el patrón de fábrica
tratando de forzar la inicialización de objetos estáticos
https://stackoverflow.com/a/2852234/673730
Supongamos la siguiente clase:
<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>
Habría asumido que cuando me especializoA
, el campo estáticox
sería inicializado. Sin embargo, lo siguiente:
<code>A<int> a; //no output </code>
no resulta en una llamada afoo
. Si intento acceder al miembro, el comportamiento es el esperado:
<code>A<int> a; bool b = a.x; //output: here </code>
EDITAR:Como puedo asegurarmeA::x
¿Se inicializa sin acceder a él?