Dlaczego nie są inicjowane statyczne pola szablonów, jeśli nie są używane? [duplikować]

Możliwy duplikat:
(statyczne inicjowanie / tworzenie instancji szablonu) problemy ze wzorem fabryki
próba wymuszenia inicjalizacji obiektu statycznego

EDYCJA: Jest duplikat tego, ale zostawię to, ponieważ osobiście miałem problem ze znalezieniem go. Dodatkowo otrzymałem odpowiedź, która mi pomogła:

https://stackoverflow.com/a/2852234/673730

Załóż następującą klasę:

<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>

Przyjąłem to, gdy się specjalizujęA, pole statycznex zostanie zainicjowany. Jednak następujące:

<code>A<int> a;
//no output
</code>

nie powoduje połączenia dofoo. Jeśli spróbuję uzyskać dostęp do członka, zachowanie jest zgodne z oczekiwaniami:

<code>A<int> a;
bool b = a.x;
//output: here
</code>

EDYTOWAĆ:Jak mogę się upewnićA::x jest inicjowany bez dostępu do niego?

questionAnswers(2)

yourAnswerToTheQuestion