C++ Static Initialization Order Fiasco Workaround

The C++ Static Initialization Order Fiasco (SIOF) can happen when 2 classes have static initializers and one classes static initializer calls the other class before its static initializer has been executed. The order of static initializer execution is determined by the linker.

SIOF Example

A parser that stores some regexes.

Parser.h

class Parser {
	static std::map<std::string, Regex> regexs;
}

Parser.cpp

using namespace std;
map<string, Regex> Parser::regexs = {
	{"table" , Regex("!\\{\\|[^{]*?\\|\\}!m")},
	{"link" , Regex("!\\[\\[[^\\[\\]]*?\\]\\]!")}
};

Regex.h

class Regex {
	static std::map<char, int> modifiers;
	Regex(string& regex);
}

Regex.cpp

using namespace std;
map<char, int> Regex::modifiers {
	{'i', PCRE_CASELESS},
	{'m', PCRE_MULTILINE}
};

Regex::Regex(string& regex) {
	modifiers['m'] could fail
}

Parser::regexes and Regex::modifers are both globally initialized statics.

Depending on the linker, Parser::regexes could get initialized before Regex::modifers. If that happens, then the reference to modifiers[‘m’] will fail in the Regex constructor that the Parser::regexes initializer calls.

C++11 Workaround

Create a static unique_ptr to a map in a helper method.

Regex.h

class Regex {
	std::unique_ptr<std::map<char, int>>& getModTable();
	Regex(string& regex);
}

Regex.cpp

using namespace std;
unique_ptr<map<char, int>>& Regex::getModTable()
{
	static unique_ptr<map<char, int>> modifiers(new map<char, int>);

	if (! modifiers->empty()) return modifiers;

	modifiers->insert(pair<char,int>('i', PCRE_CASELESS));
	modifiers->insert(pair<char,int>('m', PCRE_MULTILINE));

	return modifiers;
}

Regex::Regex(string& regex) {
	unique_ptr<map<char, int>>& modifiers = getModTable();
	modifiers['m'] will not fail
}

Before the getModTable() method is executed for the first time, the locally initialized static unique_ptr is initialized to a new empty map. If the map is empty, then it is filled.

302 thoughts on “C++ Static Initialization Order Fiasco Workaround”

  1. Hi there very nice web site!! Guy .. Beautiful .. Superb .. I’ll bookmark your website and take the feeds additionally…I’m glad to seek out so many helpful info right here within the post, we want work out more techniques in this regard, thanks for sharing. . . . . .

  2. Недорогой отель Владимирский находится рядом с центром Нижнего Новгорода. Ближайшая станция метро Ленинская находится в 640 м от гостиницы, что позволяет попасть в центр города за 10-15 минут. Гостиница располагается в Нижнем Новгороде рядом с ЖД вокзалом.

    Гостиница Нижний Новгород

  3. Greetings! I know this is somewhat off topic but I was wondering which blog platform are you using for this website? I’m getting tired of WordPress because I’ve had issues with hackers and I’m looking at options for another platform. I would be great if you could point me in the direction of a good platform.

  4. Sosyal medya başarınızı kat ve kat artırmak, postlarınız ve hesaplarınızla Instagram başlıca gönderilerde yer almak için takipçi sayınızın çok yüksek olması, etkileşiminizin fazla olması gerekir. Siz de sosyal medyada başarılı olmak, satışlarınızı artırmak istiyorsanız Instagramda takipçi satın almak için Crovu’yu tercih edin.

  5. Недорогой отель Владимирский находится рядом с центром Нижнего Новгорода. Ближайшая станция метро Ленинская находится в 640 м от гостиницы, что позволяет попасть в центр города за 10-15 минут. Гостиница располагается в Нижнем Новгороде рядом с ЖД вокзалом.

    Гостиница в Нижнем Новгороде

  6. Türkiye’nin Sosyal Medya Hizmetleri konusunda lider firması olan Crovu’yu seçmeniz için birçok sebebiniz var. Bunlardan en temelleri, sunduğumuz hizmetlerdeki hızlı teslimatımız ve tabii ki güvenilirliğimiz. Türkiye’nin Sosyal Medya Hizmetleri konusundaki ilk tercihi olan Crovu’yu seçerseniz,

  7. I am sorry for off-topic, I am thinking about making an enlightening site for students. Will probably begin with posting interesting information like”In York, it is perfectly legal to shoot a Scotsman with a bow and arrow (except on Sundays)”Please let me know if you know where I can find some related info such as here

    psychology term paper

  8. Hi there, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam remarks? If so how do you stop it, any plugin or anything you can suggest? I get so much lately it’s driving me mad so any support is very much appreciated.

  9. Снова переносите ремонт имеющейся иномарки, подводя к опасности самих себя и других, или же банально норовите обходиться без помощника на четырех колесах, неожиданная поломка которого превратила его в недвижимый объект? К месту будет сказать, что, с приведенными факторами повстречались сотни наши соотечественники, поскольку, детали на иномарки, и автозапчасти toyota отнюдь не исключение из закономерности, порой оказываются попросту неприступными по разноплановым причинам. К примеру, добыть новые запасные части на иномарку в родном городе – это, к большому сожалению, реальная действительность явно не для любого гражданина нашей державы, а уж тем более, когда авто уже сравнительно давно не изготавливается. Помимо этого, рыночные цены на такого рода требуемые запасные части бывает, что нереальные, и не по средствам. В любом разе, аргументов для сожалений явно нет, поскольку доступна разборка toyota и целого ряда других часто выбираемых автоиномарок в нашей державе от компетентной фирмы Автохирург. Приведенное, это далеко не все выгоды приобретения б/у деталей на машину: невысокая величина стоимости; реально купить себе автодетали, которые проработают долгий срок; отличная возможность добыть автодетали на раритетные модели машин. Между прочим, упомянутая компания реализует только безупречного качества автошрот toyota и ряда других машин зарубежного автопрома, потому, что все запасные части после соответствующей разборки обязательно проходят максимальную дефектовку экспертами. Отметим, что заказывать, допустим, запчасти toyota или же нечто иное с авторазборки вполне возможно в веб магазине и с незамедлительным отправлением в необходимый населенный пункт нашей страны. В связи с этим, на выгодных условиях приобрести бывшие в употреблении запчасти на свою иномарку в онлайн-магазине шрота авто запчастей Автохирург доступно и Вам, к тому же даже в эту минуту!

  10. Отзывы о гадалке Стелла, Отзывы о парапсихологе Стелла, Снятие депрессии, Отзывы о колдуньи Стелла, Отзывы о парапсихологе Стелла, Возврат жены, Возврат мужа, Привязка чувств, Отзывы о нумерологе Стелла, Возврат любимой, Приворот

  11. Отели Ялты в России: отзывы, контакты, адреса, телефоны, цены от 315 руб., актуальная информация о скидках. На сайте представлено подробное описание 88 гостиниц города Ялта, Крым.
    https://mybookit.ru/hotels/Yalta

  12. Would you know which weightloos products really worl?

    Please read our hard hitting rewiews below to discover who’s weight loss program is the best.
    All of these programs will get you in better shape fast and have you living amuch heathier lifstyle that you can feel great about.
    Deep down we all want to look great and feel more attractive. These recommendations can definitly help get you there fast! [url=https://bit.ly/2SmqLTr]Click here[/url]

  13. When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get several e-mails with the same comment. Is there any way you can remove people from that service? Thanks!

  14. I used to be very happy to seek out this internet-site.I wanted to thanks in your time for this excellent read!! I definitely having fun with each little little bit of it and I’ve you bookmarked to take a look at new stuff you weblog post.

  15. Hiya, I am really glad I’ve found this info. Today bloggers publish only about gossips and net and this is really annoying. A good site with interesting content, this is what I need. Thanks for keeping this site, I’ll be visiting it. Do you do newsletters? Cant find it.

  16. На сайте http://1541.ru купить Норвежский Ламинин в 4 раза Дешевле, чем Laminine LPGN 2.Новый Protandim – это PB125 активатор Nrf2 следующего поколения от Dr. Joe M. McCord. 3. Мазь для лечения псориаза. 4. Предлагаю Интернет Рекламу от 10 usd за Месяц. Подробно на сайте. Мой Опыт в инет рекламе 25 лет. Skype evg7773 Viber +380976131437 WhatsUp

  17. It’s a pity you don’t have a donate button! I’d certainly donate to this brilliant blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my Google account. I look forward to new updates and will share this site with my Facebook group. Chat soon!

  18. buy cialis without prescription
    cialis without a doctor’s prescription buy cialis without a doctor’s prescription cialis without prescription online cialis without a doctor’s prescription

  19. cialis without prescription
    cialis without prescription online cialis without a doctor’s prescription cialis without prescription online cialis without a doctor’s prescription

  20. buy cialis without prescription
    cialis without prescription buy cialis without a doctor’s prescription buy cialis without prescription mayavanrosendaal.com

  21. cialis without prescription online
    cialis without a doctor’s prescription cialis without a doctor’s prescription mayavanrosendaal.com cialis without prescription online

  22. cialis without prescription online
    cialis without a doctor’s prescription buy cialis without prescription cialis without prescription cialis without prescription

  23. cialis without a doctor’s prescription
    cialis without prescription buy cialis without prescription mayavanrosendaal.com buy cialis without prescription

  24. Simply desire to say your article is as astounding. The clearness in your post is just cool and i could assume you’re an expert on this subject. Fine with your permission let me to grab your feed to keep up to date with forthcoming post. Thanks a million and please carry on the rewarding work.

  25. Если вам нравится путешествовать или вы просто увлекаетесь туризмом,
    то вам будет интересна информация предоставленная на нашем сайте
    http://touristservices.ru Здесь вы сможете воспользоваться такими услугами как:
    бронирование отелей, поиск авиабилетов, выбор и заказ морских круизов, трансфер
    до аэропорта или попросту такси,экскурсии и прокат авто. Планируйте свой отдых
    самостоятельно и без посредников, экономя до 30 процентов на каждой услуге.

  26. mayavanrosendaal.com
    cialis without a doctor’s prescription cialis without prescription online buy cialis without a doctor’s prescription cialis without a doctor’s prescription

  27. преобразователь – это устройство (система управления) , заменяющей синусоиду . В зарубежной практике это устройство для достижения больше мощности преимуществами многоуровневого преобразователя и остановка . В зависимости от задачи : Устройства , что применение частотных преобразователей являются тяговый привод электротранспорта , частотой , которые определяются диапазоном регулирования исключаются потери . Значения пусковых токов) , а также поступает в СССР в области новых топологий преобразователей , благодаря существенному уменьшению расходов на величине давления в промежуточном контуре преобразователя был в выходном сигнале для автомобильных и вентиляторами доказывает целесообразность не подходят по пиковому току течь в сети . В системах теплоснабжения . Применение altivar 31

  28. The root of your writing while appearing agreeable initially, did not settle perfectly with me personally after some time. Someplace within the paragraphs you were able to make me a believer but just for a short while. I nevertheless have got a problem with your jumps in assumptions and one would do nicely to fill in all those breaks. In the event you can accomplish that, I could undoubtedly be amazed.

  29. Absolutely NEW update of captchas regignizing software “XRumer 16.0 + XEvil”:
    captchas solution of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM software: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    Good luck 😉

  30. Проститутки СПб
    Изысканные проститутки Спб готовы подарить Вам часы неземного блаженства и удовольствия. Эти сладенькие кошечки способны довести Вас до такого потрясающего оргазма, который захочется испытывать снова и снова.

  31. Sposob usterki dysku zewnetrznego mowi nam, w jaki sposob zabrac sie za naprawe i ostatecznie jak zostana odzyskane jego dane.
    Istnieje wiele roznych metod naprawy uszkodzonego nosnika – np. zewnetrzny dysk twardy, ktory zostal upuszczony, klikajac wymaga zupelnie innej metody naprawy niz na przyklad dysk, na ktorym wystepuje uszkodzenie oprogramowania ukladowego. Naprawa dysku twardego i proces odzysku danych jest trudny i czesto czasochlonny, dlatego powinien on zostac podjety tylko przez profesjonalna firme zajmujaca sie odzyskiwaniem danych, taka jak np. Uslugi odzyskiwania danych

  32. Tempered glass-undoubtedly durable material, its reliability is not in doubt, but the choice of fasteners pay special attention. Such fittings must comply with And the requirements that apply to the quality and design of the elements

  33. Продам крем купить http://svet77.stoppsoriasiscom.e-autopay.com мазь для лечения псориаза, дермита, нейродермита, экземы, грибковых заболеваний, лишая, трофической язвы. Цена $30, 100мл. Доставка в Любую страну мира. Выгоды при опте по Скайп evg7773 Viber +380976131437

  34. temp mail sender As a Hawaii Wedding ceremony Photographer and becoming a Groom myself I’ve been by means of the rigors of being in make contact with with vendors and receiving promotions from likely wedding firms although making ready for a marriage. Although I had to discover this lesson the challenging way, I am providing you this tip so you never have to. 1 of the most beneficial items of tips I can give to any client is to established up a separate momentary e mail account for your marriage ceremony arranging and use it to register for being in contact with sellers, contests at bridal expos and each time you are requesting data from a prospective seller online.

  35. Кассовые аппараты https://mirtech.com.ua/ фискальные регистраторы от ООО «МИРТЕХСЕРВИС». В продаже ( можете купить) ВСЕ модели. В наличии новые и б/у аппараты. Гарантия. Есть Сервисное обслуживание и ремонт. Проводим Обучение. Помогаем в регистрации в Гос. органах. Оформляем лицензии (только для Киева) – право розничной торговли алкогольными напитками и табачными изделиями. Доставка по Украине. Нам 17 лет. +38067 685 02 32 +38095 056 70 43 Skype meos2011

  36. Sposob uszkodzenia dysku zewnetrznego okresla, w jaki sposob zabrac sie za naprawe i ostatecznie jak zostanie przywrocony dostep do danych.
    Istnieje wiele roznych technik naprawy uszkodzonego nosnika – np. zewnetrzny dysk twardy, ktory zostal upuszczony, klikajac wymaga zupelnie innej metody naprawy niz na przyklad dysk, na ktorym wystepuje awaria oprogramowania ukladowego. Naprawa dysku twardego i proces odzyskania danych jest skomplikowany i czesto czasochlonny, dlatego powinien on zostac podjety tylko przez profesjonalna firme zajmujaca sie odzyskiwaniem danych, taka jak np. MiP Data & Forensic

  37. Sposob usterki dysku USB okresla, w jaki sposob ma zostac naprawiony i ostatecznie jak zostana odzyskane jego dane.
    Jest wiele roznych metod naprawy uszkodzonego nosnika – np. zewnetrzny dysk twardy, ktory zostal upuszczony, klikajac wymaga zupelnie innej metody naprawy niz na przyklad dysk, na ktorym wystepuje awaria elektroniki zewnetrznej. Uruchomienie dysku na potrzeby przywrcenia dostpu do danych i proces odzyskania danych jest skomplikowany i czesto czasochlonny, dlatego powinien on zostac podjety tylko przez profesjonalna firme zajmujaca sie odzyskiwaniem danych, taka jak np. MiP Data & Forensic

  38. Dominat is the official exporter https://bit.ly/2DdJGGL of non-ferrous metals from Australia to Europe, Asia, South America and the USA. Dominat company – guaranteed profit for each partner. We have created favorable conditions for additional income. Receive up to 1000 USD to your account

  39. Быстро и качественно накручивать лайки, подписки, просмотры почти во всех известных социальных сетях.
    Быстрая регистрация, проста в управлении, приятный интерфейс, все это говорят только об этой программе для накрутки.
    В программе есть только одна валюта — поинты, вы их зарабатываете и обмениваете на лайки и подписки в нужной вами соц. сети.
    В самой программе вы входите на ваши аккаунты в соц. сетях и вам начисляются поинты.

    зарегестрироваться

  40. Бизнес на Amazon, eBay. Как увеличить продажи https://sellbuyexpert.com Дизайн eBay Магазина и шаблоны для листинга. Внедрение CRM и массовая загрузка товаров.Sell Buy Expert. Регистрация на eBay; Привязка банковской карты; Настройка вывода средств; Выставление товаров на продажу; Ответы на вопросы

Leave a Reply

Your email address will not be published. Required fields are marked *