Вернуться к теме трехлетнего периода обновления стандарта C++ заставил свежий отчет Герба Саттера о недавнем заседании комитета по стандартизации C++. В частности одна фраза оттуда:
For trivial relocatability, we found a showstopper bug that the group decided could not be fixed in time for C++26, so the strong consensus was to remove this feature from C++26.
Т.е. в одной из фич C++26 обнаружили проблему, исправить эту проблему до принятия C++26 не успевают, поэтому фича из стандарта была выброшена вообще. И, в лучшем случае, она станет частью C++ только в 2029-ом, в рамках C++29.
Что приводит к вопросу о том, а хорошо ли, что C++ обновляется всего раз в три года?
Почему бы не принимать обновленные редакции два раза в год?
Скажем, C++26.1 в марте 2026, а C++26.2 в сентябре 2026. Потом C++27.1 в марте 2027, а C++27.2 в сентябре 2027. И т.д.
Когда конкретное предложение (например, по trivial relocatability) будет готово, тогда оно и попадет в ближайшую редакцию. Не успеет к C++26.1 -- попадет в C++26.2, не успеет к C++26.2 -- значит попадет в C++27.1.
Я это к тому, что этикетка, скажем, C++23, в современных обстоятельствах ничего не значит. Есть на бумаге стандарт C++23, а на практике от этого может не быть никакого толку. Даже если вы сидите на самых свежих компиляторах, все равно в них может не быть полной поддержки C++23. Поэтому отталкиваться приходится не от стандарта, а от версии компилятора. А раз так, то какая разница, не поддерживает компилятор обновляющийся раз в три года стандарт, или же он не поддерживает выходящую два раза в год спецификацию? Как по мне, то никакой.
Так уж получается, что в конце 2025-го года совершенно все равно, является ли std::start_lifetime_as частью C++23 или же частью C++20, или же частью условного C++27.2. Нет start_lifetime_as в нужных мне компиляторах и непонятно когда появится, так что без разницы, приняли ли start_lifetime_as в C++20 или C++23.
Стандарт C++ давным-давно превратился в нечто вроде "заявления о намерениях", которые когда-то как-то может быть будут реализованы. И какой смысл выпускать это "заявление о намерениях" раз в три года? Точно так же можно делать это и два раза в год. В начале 2026-го что-то добавили в C++, затем в конце 2026, затем в начале 2027-го. Все равно затем ждать пару-тройку лет.
Можно предположить, что сама по себе процедура стандартизации C++ не рассчитана на выпуск двух стандартов в год. Типа там много накладных расходов на бюрократию и вот это вот всё.
Однако, можно задать следующий напрашивающийся вопрос: а зачем в современных условиях вообще нужен стандарт C++ именно как ISO-стандарт?
Почему роль этого самого "заявления о намерениях" не может играть некая спецификация, публикуемая от имени некоторой некоммерческой организации? Зачем сейчас развивать C++ под эгидой ISO?
Можно понять значимость стандартизации в начале 1990-х, когда было с полдюжины живых C++ных компиляторов от совершенно разных поставщиков. Некоторые из которых (Borland и Microsoft, как минимум) еще и норовили свои расширения в язык добавлять. В таких условиях роль толстого фолианта с печатью ISO стандарта была понятна.
Но сейчас-то? На фоне того, как постепенно удушающие С++ в смертельных объятиях Java, C#, Go и Rust, вообще не парятся какой-либо стандартизацией. Просто развиваются и просто делают C++ все менее и менее нужным.
В общем, иногда мне кажется, что главным врагом C++ становится сам комитет по стандартизации и его приверженность странным (мягко говорям) правилам работы.