title: Prevent static initialization order "fiasco", C++
body: <p>Once I was reading an awesome <a href="https://isocpp.org/faq" rel="noreferrer">C++ FAQ</a> (It is really good!!) and read the <a href="https://isocpp.org/wiki/faq/ctors#static-init-order" rel="noreferrer">topic</a> about how to prevent the static initialization order "fiasco". So the author advises to wrap the static variables into functions, thus to prevent the "fiasco" by maintaining the creation order of variables. But this seems to me a rude workaround. So my question is, is there any modern, more pattern oriented way to prevent this "fiasco" but to wrap the "static stuff" into functions??? </p>