Национальные комитеты ISO отклонили принятие стандарта C++26 - QubStore

Национальные комитеты ISO отклонили принятие стандарта C++26

Впервые за всю историю основного стандарта C++ национальные комитеты ISO (NB, National Bodies) не утвердили международную спецификацию — финальный вариант C++26, принятый в марте, не прошёл голосование.

Причина отказа — включение в язык средств контрактного программирования (Contracts). Они дают возможность описывать формальные спецификации интерфейсов через три новых оператора: pre (предусловие), post (постусловие) и contract_assert (проверка утверждения). Ряд национальных комитетов счёл эту функциональность недостаточно зрелой, хотя в рабочей группе WG21 за неё отдали голоса более двух третей участников. Любопытно, что поддержку контрактов изначально хотели добавить ещё в C++20, но тогда отправили на доработку.

Сейчас обсуждаются несколько сценариев: вынести переработанный черновик на повторное голосование комитетов, вернуть его на стадию рассмотрения комитетом по стандартизации языка C++, опубликовать как техническую спецификацию вместо полноценного стандарта либо вовсе свернуть проект C++26 — с возвратом к C++23 и переносом уже одобренных нововведений в C++29, где все предложения придётся согласовывать заново.

Отдельно отмечают нарушение привычной практики: раньше национальные комитеты соглашались с компромиссами, выработанными в рабочих группах, и голосовали против только при свежих недочётах или процедурных ошибках. По словам члена комитета по стандартизации C++ из Германии, на этот раз против стандарта звучали аргументы, которые WG21 уже разбирала и отклоняла на предыдущих этапах.

Следующее заседание рабочей группы запланировано на 16 ноября, и пока непонятно, удастся ли участникам прийти к согласию при пошатнувшемся доверии. Для движения C++26 вперёд или его отмены нужен консенсус, но противники контрактного программирования не собираются менять позицию, а сторонники не готовы обесценивать многолетний труд.

Ссылка на основную публикацию