title: Request for the detailed description of "Static Initialization Order Fiasco"
body: <p>I read about the SIOF in the faq-lite and still I really don't understand why the issue happens. I have a static library(.a) and I use that library to use its static const data member object type. Then that static const data member object type I use and assign to a global variable(object). But it seems that global variable is empty when I use that global variable to my main or to any local function. I know obviously that my issue is SIOF but I really don't understand why my static const data member object was not initialized. </p>
  
  <p>It was static library so I guess when we created our static library the static const data member object was compiled and linked to that static library, correct me if I'm wrong..</p>
  
  <pre><code>//libsource.h
  class foo
  {
     public:
     ....
  
     public:
     static const barbar foofaa;
  };
  
  //libsource.cpp
  const barbar foo::foofaa = barbar();
  
  //main.cpp
  #include &lt;libsource.h&gt;
  
  barbar foos= foo::foofaa;
  
  int main()
  {
     //can't use foos because its empty
  }
  </code></pre>
  
  <p>Please advice. Why that static const data member object was not initialized even if its in the static library? </p>
  
  <p>Many thanks.</p>