Orthodox C++ (иногда называют C+) — это минимальное подмножество C++, которое улучшает C, но избегает всего лишнего из так называемого Modern C++. Авторы статьи раньше сами были модными хипстерами от C++ и использовали новейшие фичи, но со временем поняли, что многие из них только усложняют код, а некоторые оказались откровенно плохими — RTTI, исключения, потоки.
В основе Orthodox C++ лежит принцип: пиши как на C, если не требуется большая сложность. Код должен быть понятен любому, кто знаком с C. Пример «Hello World» — обычный printf из <stdio.h>, никаких iostream или std::cout.
Чего нельзя использовать? Исключения — они требуют сложной рантайм-поддержки, замедляют даже код без try/catch, и их спецификации не проверяются на этапе компиляции. RTTI тоже под запретом. C++-обёртки для C-заголовков (<cstdio>, <cmath>) — берите оригинальные C-шные <stdio.h> и <math.h>. Потоки (<iostream>, <stringstream>) замените на printf-стиль. STL, где есть аллокация памяти, — только если вы готовы следить за управлением памятью (автор ссылается на доклад Андрея Александреску на CppCon 2015 про std::allocator и тред про отказ от STL в AAA-геймдеве). Метапрограммирование — в меру, только где оно реально уменьшает сложность.
С новыми фичами стандарта советуют не спешить. Общее правило: если текущий год = год стандарта + 5, то можно начинать выборочно использовать его возможности. Например, C++11 стал безопасен примерно с 2016 года, а если вы в 2016 году пишете под C++17 — это уже «Resume Driven Development». От модулей (modules) лучше вообще отказаться: они требуют переписывания кода, теряется переносимость, бинарники несовместимы (кроме MSVC), а пользы — ноль.
Любопытное обновление: по состоянию на 14 января 2025 года Orthodox C++ committee одобрил выборочное использование C++20. Так что движение живёт и слегка смягчается, но основные принципы остаются: меньше фич — проще код, дольше живёт.