title: C++ Controlling destructor order for global objects
body: <p>I've got a class (A) that accesses (indirectly via a static method) a static variable (an STL container) in another class (B) in its constructor and destructor.</p>
  
  <p>A objects may be global, global constants, static members of another class, stored in other classes (which may themselves have global or static instances) or basically anywhere else a c++ object can be.</p>
  
  <p>If an A object is constructed before the static members in B or destructed after the static members in B, it will cause a crash at some point (usually an access violation).</p>
  
  <p>Is there some way to guarantee that all instances of class A (except those that have leaked, since by definition there "lost" and so wont be destructed any way) are constructed after and destructed before B's static variable?</p>
  
  <p>I've seen some solutions for making a specific variable be constructed/destructed before/after another, however not a general case of all instances of a given type so am not sure how to approach this.</p>