title: Order of object construction/initialization
body: <p>In which order will the ctors be called?</p>
  
  <pre><code>template&lt;class T&gt;
  class A {
      public:
          static std::function&lt;void(void)&gt; funcobj;
  };
  
  template&lt;class T&gt;
  std::function&lt;void(void)&gt; A&lt;T&gt;::funcobj = [](){};
  
  class B : public A&lt;B&gt; {
      public:
          static const int i;
  
          B::B()
          { 
              DoSomethingHere(); 
          };
  }inst;
  
  std::function&lt;void(void)&gt; B::funcobj = [](){};
  
  const int B::i = 2;
  </code></pre>
  
  <p>Am I right that the order will be something like this?<br>
   - const int B::i -> should be hardcoded in a data section of the PE file and thus doesn't need to be constructed at all?<br>
   - ctor of std::function for the initialization of A&lt; B >::funcobj<br>
   - ctor of A<br>
   - ctor of std::function for the initialization of B::funcobj (though A&lt; B >::funcobj and B::funcobj should be technically the same)<br>
   - ctor B::B  </p>